下载
中文
注册

查看算子仿真流水图

msOpGen工具通过解析用户生成的dump文件,并生成算子仿真流水图文件(trace.json)。

  1. 参考Link,在${install_path}/samples/operator/ascendc/0_introduction/1_add_frameworklaunch路径下运行install.sh文件,并生成CustomOp文件夹。

    此样例工程不支持 Atlas 训练系列产品

    ./install.sh -v Ascendxxxyy  # xxxyy为用户实际使用的具体芯片类型
  2. 编译算子工程。
    1. 参考编译前准备章节,完成编译相关配置。
    2. 在算子工程目录CustomOp下,执行如下命令,进行算子工程编译。
      编译完成后,将会在build_out目录生成.run算子包。
      ./build.sh
  3. 在自定义算子包所在路径下,执行如下命令,部署算子包。
    ./build_out/custom_opp_<target os>_<target architecture>.run
  4. 切换到AclNNInnovation仓的目录${install_path}/samples/operator/ascendc/0_introduction/1_add_frameworklaunch/AclNNInvocation,执行以下命令。
    ./run.sh
  5. 生成算子仿真流水图文件。

    执行如下命令,参数说明请参见表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文件所在路径,可配置为绝对路径或者相对路径。

    说明:

    需配置为表2中“simulator_mode”为ca时生成的dump文件所在路径。

    -subc--subcore_id

    子核编号,支持展示单个子核。

    dump文件名带有veccore{id}或cubecore{id}时,需配置此参数指定待解析的dump文件。如文件名为core0.veccore0.instr_log.dump,“veccore0”即为subcore id。

    二选一

    说明:

    Atlas A2 训练系列产品/Atlas 800I A2 推理产品 需配置该参数。

    -mix,--mixcore-mode

    支持展示mix融合算子。

    -reloc,--relocatable-file

    配置为kernel侧算子编译后生成的.o文件或可执行文件所在路径。

    进行流水图与代码行的映射,并生成代码行和指令耗时.csv文件。

    说明:

    基于算子工程编译生成包含调试信息的.o文件(路径为${install_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
    • -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 训练系列产品/Atlas 800I 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融合算子。
  6. 使能环境变量后,请参考msprof op simulator功能进行仿真,并生成dump数据。
    export LD_LIBRARY_PATH=${install_path}/samples/operator/ascendc/0_introduction/1_add_frameworklaunch/CustomOp/build_out/op_host/:$LD_LIBRARY_PATH
  7. 查看算子仿真流水图文件。

    可以在Chrome浏览器中输入“chrome://tracing”地址,将输出路径下的dump2trace_core0.json文件拖到空白处打开,通过键盘上的快捷键(W:放大,S:缩小,A:左移,D:右移)进行查看,如下图所示。

    图1 单个子核展示
    图2 mix融合算子展示
    表2 字段说明

    字段名

    字段含义

    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。(仅 Atlas A2 训练系列产品/Atlas 800I A2 推理产品 支持展示)

    FLOWCTRL

    控制流指令。

    ICmiss

    未命中icache。

  8. 查看代码行或指令耗时文件。
    在输出路径下打开代码行耗时文件{核编号}_code_exe_prof.csv,如下图所示。
    图3 代码行耗时文件
    在输出路径下打开指令耗时文件{核编号}_instr_exe_prof.csv,如下图所示。
    图4 指令耗时文件

    通过文件中的“call count”“cycles”字段可以分别查看代码行或指令的调用次数和累计耗时。