computing cost (no DDR)+load/store cost 为啥不等于active period of time ?

computing cost (no DDR)+load/store cost 为啥不等于active period of time ? 这个active period of time 指的是什么 ?到底 ?

这三个字段来自 hb_compile 编译后自动生成的静态性能评估 html(或调用 hbm_perf 接口生成的 html)里的 Layer Details 表。官方对这张表的定义是:每层 BPU 算子给出「计算量、计算耗时、数据搬运耗时,以及编译后 layer 活跃时间段」,并明确注明这个活跃时间段不代表该 layer 的执行时间,因为「通常为多个 layer 交替/并行执行」。

所以:

  • computing cost (no DDR):该层在计算单元上、不计 DDR 访存的耗时估算;
  • load/store cost:该层 LOAD/STORE 数据搬运的耗时估算(报告里 Timeline 也把 LOAD 定义为内存→片上缓存、STORE 为片上/寄存器→内存);
  • active period:该层在编译器排布的指令时间轴上,从第一条到最后一条相关指令跨越的活跃窗口,不是一个独占的时间片。

加和不等于它,主要是这几点:

  1. 两个 cost 分属不同计算单元(TAE/VAE/AAE/TRANS 与 LOAD/STORE),在流水里是重叠并行的,不是串行累加,加和本身不对应任何一段真实时间;
  2. active period 是跨度窗口,中间可能夹进别的 layer 的指令、依赖等待、引擎间同步和气泡,所以它通常会大于单独某个 cost;
  3. 反过来,一层内部 compute 与搬运重叠时,两个各自按占用估算的值加和也可能盖过窗口——两个方向都可能,取决于该层的调度情况;
  4. 这些数值是编译器对硬件的静态预估,不是板端实测,实际还叠加 function-call/调度开销、核分配、频点等因素。

要判断模型整体速度,看 Summary 的预估 FPS,并在板端用 hrt_model_exec perf 实测;要定位瓶颈,则对比 Layer Details 里各层计算量与两种耗时的比例,再结合 Timeline 看哪个单元(TAE/VAE/LOAD/STORE)被占满。

依据:性能评测及调优(静态性能评测与 Layer Details 字段说明)

如果这些字段不是来自上述报告,而是别的 profiling 工具输出,说下工具名和板型号/工具链版本,我按那份输出再对一遍。

这两个 cost 分别是计算和数据搬运的开销,BPU 可以让计算和搬运重叠进行,所以不能直接相加

active period of time 是该层在编译调度时间轴上的活跃区间,中间可能穿插其他层的执行,不代表该层独占了这么长时间,模型整体耗时看报告里的 Latency

https://developer.d-robotics.cc/oe_x5_doc/cn/oe_mapper/source/ptq/ptq_usage/performance_evaluation.html

这两个 cost 是同一层在两条执行路径上的开销估算,而 active period 是时间轴上的一个跨度,本来就不构成相加关系。

  • computing cost (no DDR):该层在计算单元上的耗时估算,按字段名不含 DDR 访存;
  • load/store cost:该层数据搬运的耗时估算(Timeline 里 LOAD 指内存→计算平台缓存,STORE 指片上缓存/寄存器→内存);
  • active period of time:编译调度后,该层指令在时间轴上第一条到最后一条之间的活跃区间。官方原文已注明它不代表该 layer 的执行时间,通常是多个 layer 交替/并行执行。

所以对不上很正常:BPU 的计算单元与 LOAD/STORE 是流水并行,两个 cost 是同一段时间里两条路径各自占用的估算,相加不对应任何真实时段;而活跃窗口中间还夹着其他 layer 的指令、引擎间依赖等待和气泡,通常大于单个 cost,但若层内计算与搬运高度重叠,两 cost 之和也可能盖过窗口——两个方向都可能出现。判断模型快慢看 Summary 的预估 FPS,并在板端用 hrt_model_exec perf 实测;active period 只用于在 Timeline 上看谁和谁重叠。

依据(Layer Details / Timeline 字段定义):性能评测及调优