msProf工具包含msprof op和msprof op simulator两种使用方式,msprof op通过MindStudio Insight展示计算内存热力图和Roofline分析图,msprof op simulator通过MindStudio Insight展示指令流水图和算子代码热点图,协助用户定位算子内存、算子代码以及算子指令的异常,实现全方位的算子调优。
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 | └──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 |
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分析图。 说明:
visualize_data.bin可通过MindStudio Insight工具进行可视化展示,具体使用方法请参考《MindStudio Insight 用户指南》。 |
算子调优工具支持仿真环境下的性能数据采集和自动解析。
ascendc_compile_definitions ( ... -DASCENDC_TRACE_ON )
add_ops_compile_options ( ... -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核,以便用户快速确定最耗时的指令,可参考代码指令信息文件。 |
|
trace.json |
仿真指令流水图文件,包括每个核的子文件以及全部核的汇总文件,可参考指令流水图。 |
|
visualize_data.bin |
仿真流水图和仿真热点函数等信息可视化呈现文件,具体请参见指令流水图 MindStudio Insight展示和算子代码热点图。 说明:
生成仿真流水图以及仿真热点函数等信息可视化呈现文件visualize_data.bin,该文件可通过MindStudio Insight工具进行可视化展示,具体使用方法请参考《MindStudio Insight 用户指南》。 |