展示如何通过msProf工具的指令流水图特性,分析算子的瓶颈点,并实现vector算子的性能优化。
操作步骤
- 参考msprof op simulator节点,将算子仿真性能数据采集得到的visualize_data.bin文件导入MindStudio Insight,具体导入操作请参考《MindStudio Insight用户指南》的“导入性能数据”章节。
- 查看算子指令流水图。
可以发现MTE2流水在VADD计算时,没有执行搬运指令,且MTE2流水为该算子的性能瓶颈,需提高MTE2的搬运效率以实现算子性能优化。

- 对于MTE2搬运效率的提升有多种方式,此处以开启Ascend C算子的double buffer机制为例。
例如样例算子核函数中,可通过将TPipe中InitBuffer的第二个参数(BUFFER_NUM)值从1修改为2,开启double buffer,InitBuffer的使用可参考
InitBuffer。
constexpr int32_t BUFFER_NUM = 2; // tensor num for each queue
...
pipe.InitBuffer(inQueueY, BUFFER_NUM, 1024 * sizeof(half));
...
- 重新执行步骤1,查看优化后的指令流水图。
在VADD指令计算时,MTE2上的搬运指令也同步执行,实现了更高效的数据搬运。
