msProf工具包含msprof op和msprof op simulator两种使用方式,协助用户定位算子内存、算子代码以及算子指令的异常,实现全方位的算子调优。两种使用方式的详细说明请参考表1。
功能名称 |
适用场景 |
使用方式 |
展示的图形 |
---|---|---|---|
适用于实际运行环境中的性能分析,可协助用户定位算子内存和性能瓶颈。 |
直接分析运行中的算子,无需额外配置,适合在板环境中快速定位算子性能问题。 |
说明:
若要实现Cache热力图跳转功能,需参考msprof op配置进行配置。 |
|
适用于开发和调试阶段,进行详细仿真调优,可协助用户分析算子指令和代码热点问题。 |
需要参考msprof op simulator配置,配置环境变量(如LD_LIBRARY_PATH)和编译选项(如添加 -g 生成调试信息),适合在仿真环境中详细分析算子行为。 |
msprof op --output=$home/projects/output $home/projects/MyApp/out/main // --output为可选参数 $home/projects/MyApp/out/main为使用的app
msprof op ./add_custom_npu
msprof op --aic-metrics=<select_metrics> --output=./output_data ./add_custom_npu
msprof op --config=./add_test.json --aic-metrics=<select_metrics> --output=./output_data
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | └──OPPROF_{timestamp}_XXX ├── device0 // 运行时使用昇腾AI处理器的ID └── device1 ├── OpName0 // OpName0为采集算子名称 │ ├── 0 // 表示算子调度顺序 │ │ ├──dump // 与单算子含义一致,存放过程件的文件夹 │ │ └──xxx_yyy.csv //xxx代表该算子生成的指标种类名,例如L2Cache,具体指标种类可参考中的csv文件介绍,yyy为csv文件的时序后缀,例如L2Cache_20240603022812284.csv │ │ └──visualize_data.bin ├── OpName1 │ ├── 0 │ │ ├──dump │ │ └──xxx_yyy.csv │ │ └──visualize_data.bin ├── OpName2 │ ├── 0 │ │ ├── dump │ │ └── xxx_yyy.csv │ │ └──visualize_data.bin │ │ └── mc2_trace.json // 此文件仅适用于MC2算子 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | └──OPPROF_{timestamp}_XXX ├── OpName0 // OpName0为采集算子名称 │ ├── 0 // 表示算子调度顺序 │ │ ├── dump // 与单算子含义一致,存放过程件的文件夹 │ │ └── xxx_yyy.csv //xxx代表该算子生成的指标种类名,例如L2Cache,具体指标种类可参考中的csv文件介绍,yyy为csv文件的时序后缀,例如L2Cache_20240603022812284.csv │ │ └──visualize_data.bin │ ├── 1 │ │ ├──dump │ │ └──xxx_yyy.csv │ │ └──visualize_data.bin ├── OpName1 │ ├── 0 │ │ ├── dump │ │ └── xxx_yyy.csv │ │ └── visualize_data.bin |
1 2 3 4 5 6 7 8 9 10 11 | OPPROF_{timestamp}_XXX ├── dump ├── ArithmeticUtilization.csv ├── L2Cache.csv ├── Memory.csv ├── MemoryL0.csv ├── MemoryUB.csv ├── OpBasicInfo.csv ├── PipeUtilization.csv ├── ResourceConflictRatio.csv ├── visualize_data.bin |
名称 |
说明 |
---|---|
dump文件夹 |
原始的性能数据,用户无需关注。 |
ArithmeticUtilization.csv |
cube和vector类型的指令耗时和占比,可参考ArithmeticUtilization(cube及vector类型指令耗时和占比)。 |
L2Cache.csv |
L2 Cache命中率,可参考L2Cache(L2 Cache命中率)。 |
Memory.csv |
UB/L1/L2/主存储器采集内存读写带宽速率,可参考Memory(内存读写带宽速率)。 |
MemoryL0.csv |
L0A/L0B/L0C采集内存读写带宽速率,可参考MemoryL0(L0读写带宽速率)。 |
MemoryUB.csv |
mte/vector/scalar采集ub读写带宽速率,可参考MemoryUB(UB读写带宽速率)。 |
PipeUtilization.csv |
采集计算单元和搬运单元耗时和占比,可参考PipeUtilization(计算单元和搬运单元耗时占比)。 |
ResourceConflictRatio.csv |
UB上的bank group、bank conflict和资源冲突在所有指令中的占比,可参考ResourceConflictRatio(资源冲突占比)。 |
OpBasicInfo.csv |
算子基础信息,包含算子名称、block dim和耗时等信息,可参考OpBasicInfo(算子基础信息)。 |
visualize_data.bin |
算子基础信息、计算单元负载、热点函数和Roofline瓶颈分析等信息的可视化呈现文件,具体请参考计算内存热力图、Roofline瓶颈分析图、Cache热力图、通算流水图(MC2算子)和算子代码热点图。 说明:
|
mc2_trace.json |
MC2通算流水可视化呈现文件,Chrome浏览器具体请参考通算流水图(MC2算子)。 |
算子调优工具支持仿真环境下的性能数据采集和自动解析。
ascendc_compile_definitions ( ... -DASCENDC_TRACE_ON )
msprof op simulator --output=/home/projects/output /home/projects/MyApp/out/main // --output为可选参数 /home/projects/MyApp/out/main为使用的app
msprof op simulator --output=./output_data ./add_custom_npu
msprof op simulator --config=./add_test.json --output=./output_data
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | OPPROF_{timestamp}_XXX ├── dump └── simulator ├── core0.veccore0 // 按照core*.veccore*或core*.cubecore*目录存放各核的数据文件 │ ├── core0.veccore0_code_exe.csv │ ├── core0.veccore0_instr_exe.csv │ └── trace.json // 该核的仿真指令流水图文件 ├── core0.veccore1 │ ├── core0.veccore1_code_exe.csv │ ├── core0.veccore1_instr_exe.csv │ └── trace.json ├── core1.veccore0 │ ├── core1.veccore0_code_exe.csv │ ├── core1.veccore0_instr_exe.csv │ └── trace.json ├── ... ├── visualize_data.bin └── trace.json // 全部核的仿真指令流水图文件 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | └──OPPROF_{timestamp}_XXX ├── OpName1 // OpName1为采集算子名称 │ ├── 0 // 表示算子调度到的顺序 │ │ ├── dump // 与单算子含义一致,存放过程件的文件夹 │ │ └──simulator // 与单算子simulator文件夹内容一致,但simulator文件夹中的csv文件均会增加时序后缀,例如core*_code_exe_20240429111143146.csv │ ├── 1 │ │ ├── dump │ │ └──simulator │ ├── dump // 存放过程件的文件夹 ├── OpName2 │ ├── 0 │ │ ├── dump │ │ └── simulator │ ├── dump |
名称 |
说明 |
|
---|---|---|
dump文件夹 |
原始仿真生成的dump数据存放文件夹。 |
|
simulator文件夹 说明:
dump数据文件分析结果存放文件夹。 |
core*_code_exe.csv |
代码行耗时,*代表0~n核,以便用户快速确定编写的代码中最耗时的部分,可参考代码行耗时数据文件。 |
core*_instr_exe.csv |
代码指令详细信息,*代表0~n核,以便用户快速确定最耗时的指令,可参考代码指令信息文件。 |
|
visualize_data.bin |
仿真流水图和仿真热点函数等信息可视化呈现文件,具体请参见指令流水图及算子代码热点图。 说明:
生成仿真流水图以及仿真热点函数等信息可视化呈现文件visualize_data.bin,该文件可通过MindStudio Insight工具进行可视化展示,具体使用方法请参考《MindStudio Insight工具用户指南》。 |
|
trace.json |
仿真指令流水图文件,包括每个核的子文件以及全部核的汇总文件,可参考指令流水图。 |