算子优化分析样例
背景介绍
在算子开发结束和整网运行出现算子性能不达标两种场景下,需要对算子进行调优。本节以AvgPool算子为例,介绍通过专家系统算子优化分析功能, 从向量指令执行效率和流水打断两个维度分析,给出优化建议,提升算子性能。
专家系统操作
以HwHiAiUser用户为例执行以下操作。
- 参见《CANN软件安装指南》安装Ascend-cann-toolkit包。
- 根据基于Roofline模型的算子瓶颈识别与优化建议结果推断MobilenetV3/expanded_conv_3/squeeze_excite/AvgPool存在Latency Compute Bound问题,即计算过程问题。针对该算子,做进一步分析。
- 取该算子的.o和.json文件。通过仿真获取core0_instr_popped_log.dump和core0_instr_log.dump文件,文件路径为${data_path}数据目录根路径的data/simulation目录下。
- 配置环境变量。
. /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh
- 执行分析命令。
msadvisor -d /home/HwHiAiUser/data -c model
-d参数数据指定算子仿真文件的路径,指定到数据目录的根目录(包含所有专家系统输入数据的目录);AI CPU算子识别功能属于对模型的分析,所以-c参数配置值为model。
- 完成分析后,系统会将分析结果以打屏的形式展示。输出MLP模型内的AI CPU算子如下。
问题分析
问题解决
优化后重新获取仿真文件进行专家系统分析,结果如下:
Command Enqueue是指令入队顺序不合理引入的打断,对cce代码进行分析,如图7所示。
重新调整cce代码,将“set_flag(PIPE_MTE2, PIPE_V, EVENT_IDX);”语句放到copy_gm_to_ubuf搬移指令后面。优化后代码如图8所示。
再次获取仿真文件进行专家系统分析,结果如下:
结论
通过专家系统工具的分析,可以快速定位算子的指令执行效率和流水打断位置。并根据专家系统的提示,对问题分析后得到解决方案,修改算子代码,解决问题。提升算子优化分析效率。
父主题: 专家系统分析样例参考