查看算子仿真流水图
msopgen工具解析dump文件并生成算子仿真流水图文件(.json)。
- 在性能仿真环境获取dump数据文件。
- 生成算子仿真流水图文件。
进入msopgen工具所在目录执行如下命令,参数说明请参见表1。
./msopgen sim -c core{id} -d xx/{path of dump data} -subc {sub core id} -out {output path} -reloc {path of .o file or executable file}表1 参数说明 参数名称
参数描述
是否必选
sim
用于性能仿真相关操作。
是
-c,--core-id
核编号。
配置芯片号,如:core0。
是
-d,--dump-dir
dump文件所在路径,可配置为绝对路径或者相对路径。
说明:仅支持“simulator_mode”参数配置为ca时生成的dump文件所在路径。
是
-subc,--subcore_id
子核编号,支持展示单个子核。
dump文件名带有veccore{id}或cubecore{id}时,需配置此参数指定待解析的dump文件。如文件名为core0.veccore0.instr_log.dump,“veccore0”即为subcore id。
二选一
说明:仅Atlas A2训练系列产品需配置该参数。
-mix,--mixcore-mode
支持展示mix融合算子。
-reloc,--relocatable-file
配置为kernel侧算子编译后生成的.o文件或可执行文件所在路径。
进行流水图与代码行的映射,并生成代码行和指令耗时.csv文件。
否
-out,--output
输出文件的路径,可配置为绝对路径或者相对路径,并且工具执行用户具有可读写权限。
是
进入msopst工具所在目录,执行以下命令。
示例一:./msopgen sim -c core0 -d xx/{model}/ca/add_custom/add_custom_pre_static_add_custom -out ./output_data -subc cubecore0 -reloc xx/.o
- -c:指定待解析dump文件的core id,如:core0。
- -d:指定性能仿真环境下生成的dump文件所在路径。例如:"{model}/ca/add_custom/add_custom_pre_static_add_custom"。
- -subc:指定待解析dump文件的subcore id,如文件名为core0.cubecore0.instr_log.dump,“cubecore0”即为subcore id。(仅Atlas A2训练系列产品需配置该参数)
- -reloc:指定kernel侧算子编译生成的.o文件或可执行文件所在路径。
示例二:./msopgen sim -c core0 -d xx/{model}/ca/add_custom/add_custom_pre_static_add_custom -out ./output_data -mix
- -c:指定待解析dump文件的core id,如:core0。
- -d:指定性能仿真环境下生成的dump文件所在路径。例如:"{model}/ca/add_custom/add_custom_pre_static_add_custom"。
- -mix :配置此参数表示支持展示mix融合算子。
- 查看算子仿真流水图文件。
可以在Chrome浏览器中输入“chrome://tracing”地址,将输出路径下的dump2trace_core0.json文件拖到空白处打开,通过键盘上的快捷键(w:放大,s:缩小,a:左移,d:右移)进行查看,如下图所示。
图1 单个子核展示图2 mix融合算子展示表2 字段说明 字段名
字段含义
VECTOR
向量运算单元。
SCALAR
标量运算单元。
CUBE
矩阵乘运算单元。
MTE1
数据搬运流水,数据搬运方向为:L1 ->{L0A/L0B, UBUF}。
MTE2
数据搬运流水,数据搬运方向为:{DDR/HBM, L2} ->{L1, L0A/B, UBUF}。
MTE3
数据搬运流水,数据搬运方向为:UBUF -> {DDR/HBM, L2, L1}。
FIXP
数据搬运流水,数据搬运方向为:FIXPIPE L0C -> OUT/L1。(仅Atlas A2训练系列产品支持展示)
FLOWCTRL
控制流指令。
ICmiss
未命中icache。
- 查看代码行或指令耗时文件。在输出路径下打开代码行耗时文件{核编号}_code_exe_prof.csv,如下图所示。图3 代码行耗时文件在输出路径下打开指令耗时文件{核编号}_instr_exe_prof.csv,如下图所示。图4 指令耗时文件
通过文件中的“call count”及“cycles”字段可以分别查看代码行或指令的调用次数和累计耗时。