昇腾社区首页
中文
注册
开发者
下载

访存

主要是针对vector算子或者cube算子的内存搬入或者搬出,会存在访存bound。

  1. 一般可以通过profiling文件,根据每个算子的数据搬运量和其消耗在搬运上的时间,来计算访存速率,判断是否存在访存bound。

    如上图所示,input的数据量是20000/48*2*8=6.5KB。其中,48是因为数据被分配到48个核上、2表示有两个20000的shape、8表示int64、mte2时间为1051us,所以计算其带宽为0.005GB/s。这个带宽远不达理论带宽,肯定是有问题的。

  2. 直接通过profiling文件的aiv_mte2_ratio字段,判断是否超过0.8。如果有大量超过0.8的算子出现,则这一部分是需要进行优化的,如下图所示:

分析方向

  1. 需要分析耗时是否合理
  2. vector算子融合,可以有效减少需要拷贝的数据量,从而释放访存压力
  3. 排查搬运的数据量是否非32byte对齐,非对齐场景也会导致带宽低,也需要在算子内做特殊处理