通过毕昇编译器编译生成可执行程序后,使用msProf工具运行NPU模式下生成的可执行文件,可以采集Ascend C算子在AI处理器上执行的性能数据,进行性能精细调优。
- Profiling性能数据采集:使用msprof工具采集Ascend C算子在AI 处理器上执行的性能数据。
- Roofline瓶颈分析:通过msprof op生成的visualize_data.bin文件可通过MindStudio Insight进行可视化呈现,Roofline瓶颈分析图可构建出处理器的性能模型,然后利用该性能模型快速评估出算子的理论性能极限,协助开发者快速识别瓶颈类型。
- 指令流水图分析:通过msprof op simulator生成visualize_data.bin文件或trace.json文件,并进行可视化呈现。指令流水图以指令维度展示时序关系,并关联调用栈快速定位瓶颈位置。
算子程序通过毕昇编译器编译生成可执行程序后,可以通过msprof op在NPU上完成性能采集。以SIMD编程场景为例,使用msprof工具采集上板性能数据大致步骤如下:
-
dav-后为NPU架构版本号,请根据实际情况进行替换,各产品型号对应的架构版本号请通过进行查询。
[object Object] 使用msprof op调用算子可执行文件进行性能采集。
[object Object]查看性能数据,了解当前算子性能瓶颈。
[object Object]
对于SIMT编程场景,只需遵循指导进行算子编译,生成可执行文件后,按照上述步骤2和步骤3使用msprof工具执行程序,以获取算子执行的性能数据。
在非昇腾设备上,通过毕昇编译器仿真编译后生成可执行程序,可以通过msprof op simulator完成性能流水仿真。当前仅支持SIMD编程场景,SIMT编程场景不支持。
通过CMake方式仿真编译算子
灵活控制不同的target是否开启仿真编译。修改CMakeList,使用target_link_libraries与target_link_directories手动配置链接库与路径:
[object Object]其中仿真库所在目录与NPU架构版本号之间的关系如下,目录名使用下划线连接“dav”和架构版本号。
表 1 simulator目录名称与npu-arch关系
[object Object][object Object]
[object Object]其中仿真编译所依赖的库介绍如下,开启仿真编译时,需要优先链接,确保优先使用仿真库的符号,防止出现运行时coredump等异常情况。
表 2 仿真编译依赖库介绍
[object Object][object Object]
[object Object]通过向CMake传入变量CMAKE_ASC_RUN_MODE和CMAKE_ASC_ARCHITECTURES来统一开启仿真编译。命令示例如下:
sim表示开启仿真编译,dav-后为NPU架构版本号,请根据实际情况进行填写。
[object Object][object Object]
通过命令行方式仿真编译算子可执行程序
[object Object]编译时除了需要连接仿真库libruntime_camodel.so和libnpu_drv.so,还需要链接libascendc_runtime.a、libruntime.so、libprofapi.so、libunified_dlog.so、libmmpa.so、libascend_dump.so、libc_sec.so、liberror_manager.so、libascendcl.so(具体说明参考)和第三方库libstdc++.so、libm.so。
性能流水仿真
使用msprof op simulator并获取仿真数据。
[object Object]仿真数据说明
[object Object]