访存
主要是针对vector算子或者cube算子的内存搬入或者搬出,会存在访存bound。
- 一般可以通过profiling文件,根据每个算子的数据搬运量和其消耗在搬运上的时间,来计算访存速率,判断是否存在访存bound。
如上图所示,input的数据量是20000/48*2*8=6.5KB。其中,48是因为数据被分配到48个核上、2表示有两个20000的shape、8表示int64、mte2时间为1051us,所以计算其带宽为0.005GB/s。这个带宽远不达理论带宽,肯定是有问题的。
- 直接通过profiling文件的aiv_mte2_ratio字段,判断是否超过0.8。如果有大量超过0.8的算子出现,则这一部分是需要进行优化的,如下图所示:
分析方向
- 需要分析耗时是否合理
- vector算子融合,可以有效减少需要拷贝的数据量,从而释放访存压力
- 排查搬运的数据量是否非32byte对齐,非对齐场景也会导致带宽低,也需要在算子内做特殊处理
父主题: 不同的瓶颈点

