msOpGen工具通过解析用户生成的dump文件,并生成算子仿真流水图文件(trace.json)。
此样例工程不支持
./install.sh -v Ascendxxxyy # xxxyy为用户实际使用的具体芯片类型
./build_out/custom_opp_<target os>_<target architecture>.run
./run.sh
export LD_LIBRARY_PATH=${git_clone_path}/samples/operator/ascendc/0_introduction/1_add_frameworklaunch/CustomOp/build_out/op_host/:$LD_LIBRARY_PATH
执行如下命令,参数说明请参见表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}
参数名称 |
参数描述 |
是否必选 |
---|---|---|
sim |
用于性能仿真相关操作。 |
是 |
-c,--core-id |
核编号。 配置处理器号,如:core0。 |
是 |
-d,--dump-dir |
dump文件所在路径,可配置为绝对路径或者相对路径。
说明:
需配置为表2中“simulator_mode”为ca时生成的dump文件所在路径。 |
是 |
-subc,--subcore_id |
子核编号,支持展示单个子核。 dump文件名带有veccore{id}或cubecore{id}时,需配置此参数指定待解析的dump文件。如文件名为core0.veccore0.instr_log.dump,“veccore0”即为subcore id。 |
二选一
说明:
仅 |
-mix,--mixcore-mode |
支持展示mix融合算子。 |
|
-reloc,--relocatable-file |
配置为kernel侧算子编译后生成的.o文件或可执行文件所在路径。 进行流水图与代码行的映射,并生成代码行和指令耗时.csv文件。
说明:
基于算子工程编译生成包含调试信息的.o文件(路径为${git_clone_path}/samples/operator/ascendc/0_introduction/1_add_frameworklaunch/CustomOp/build_out/op_kernel/binary/ascendxxxy/add_custom/AddCustom_*.o),即需要修改CMakePresets.json中CMAKE_BUILD_TYPE为“Debug”,具体可参考编译操作。 |
否 |
-out,--output |
输出文件的路径,可配置为绝对路径或者相对路径,并且工具执行用户具有可读写权限。 |
是 |
执行以下命令。
msopgen sim -c core0 -d xx/{model}/ca/add_custom/add_custom_pre_static_add_custom -out ./output_data -subc cubecore0 -reloc xx/.o
msopgen sim -c core0 -d xx/{model}/ca/add_custom/add_custom_pre_static_add_custom -out ./output_data -mix
可以在Chrome浏览器中输入“chrome://tracing”地址,将输出路径下的dump2trace_core0.json文件拖到空白处打开,通过键盘上的快捷键(W:放大,S:缩小,A:左移,D:右移)进行查看,如下图所示。
字段名 |
字段含义 |
---|---|
VECTOR |
向量运算单元。 |
SCALAR |
标量运算单元。 |
CUBE |
矩阵乘运算单元。 |
MTE1 |
数据搬运流水,数据搬运方向为:L1 ->{L0A/L0B, UBUF}。 |
MTE2 |
数据搬运流水,数据搬运方向为:{DDR/GM, L2} ->{L1, L0A/B, UBUF}。 |
MTE3 |
数据搬运流水,数据搬运方向为:UBUF -> {DDR/GM, L2, L1}。 |
FIXP |
数据搬运流水,数据搬运方向为:FIXPIPE L0C -> OUT/L1。(仅 |
FLOWCTRL |
控制流指令。 |
ICmiss |
未命中icache。 |
通过文件中的“call count”及“cycles”字段可以分别查看代码行或指令的调用次数和累计耗时。