昇腾社区首页
中文
注册

算子仿真调优

算子调优工具支持仿真环境下的性能数据采集和自动解析。
使用msprof op simulator功能时,需要先配置LD_LIBRARY_PATH环境变量来指定仿真器类型。
export LD_LIBRARY_PATH=${INSTALL_DIR}/tools/simulator/Ascendxxxyy/lib:$LD_LIBRARY_PATH  //${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。例如,若安装的Ascend-cann-toolkit软件包,则安装后文件存储路径为:$HOME/Ascend/ascend-toolkit/latest。
表1 参数说明

参数

描述

是否必选

op

开启算子调优。

说明:

msprof工具的使用依赖CANN包中的msopprof可执行文件,该文件中的接口使用和msprof op一致,该文件为CANN包自带,无需单独安装。

simulator

开启仿真调优。

说明:

由于仿真器不支持多设备,如果调用算子的应用程序main.cpp或其他代码文件中配置使用了设备号deviceid,需要修改为0。

--application

配置为运行环境上的指定可执行文件,可配置为绝对路径或者相对路径。

说明:

不建议配置其他用户目录或其他用户可写目录下的AI任务,避免提权风险。

不建议配置删除文件或目录、修改密码、提权命令等有安全风险的高危操作。

是,二选一

--config

配置为算子编译得到的二进制文件*.o,可配置为绝对路径或者相对路径。

具体可参考msprof json配置文件说明

--kernel-name

指定要采集的算子名称,支持使用算子名前缀进行模糊匹配。如果不指定,则只对程序运行过程中调度的第一个算子进行采集。

需与--application配合使用,限制长度为1024,仅支持A-Za-z0-9_中的一个或多个字符。

--output

收集到的性能数据的存放路径,默认在当前目录下保存性能数据。

--help

输出帮助信息。

算子仿真调优可以通过以下两种方式执行:
  • 基于可执行文件
    export LD_LIBRARY_PATH=${INSTALL_DIR}/tools/simulator/Ascendxxxyy/lib:$LD_LIBRARY_PATH  // xxxyy为用户实际使用的具体芯片类型
    msprof op simulator --application=./add_custom_npu --output=./output_data
  • 基于输入算子二进制文件*.o的配置文件.json
    export LD_LIBRARY_PATH=${INSTALL_DIR}/tools/simulator/Ascendxxxyy/lib:$LD_LIBRARY_PATH  // xxxyy为用户实际使用的具体芯片类型
    msprof op simulator --config=./add_test.json --output=./output_data
命令完成后,会在指定的“--output”目录下生成以“OPPROF_{timestamp}_XXX”命名的文件夹,结构示例如下:
OPPROF_{timestamp}_XXX
├── dump
└── simulator
    ├── api    // 热点函数信息所在目录
    │   ├── add_custom.cpp    
    │   └── api.json     
    ├── 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      // 全部核的仿真指令流水图文件
  • dump文件夹:原始仿真生成的dump数据存放文件夹。
  • simulator文件夹:dump数据文件分析结果存放文件夹。
    • core*_code_exe.csv:代码行耗时,*代表0~n核,以便用户快速确定编写的代码中最耗时的部分,可参考代码行耗时数据文件
    • core*_instr_exe.csv:代码指令详细信息,*代表0~n核,以便用户快速确定最耗时的指令,可参考代码指令信息文件
    • trace.json:仿真指令流水图文件,包括每个核的子文件以及全部核的汇总文件,可参考仿真指令流水图文件
    • visualize_data.bin:仿真流水图和仿真热点函数等信息可视化呈现文件。
    • api.json:热点函数信息文件。
    • add_custom.cpp:算子kernel侧实现文件。

      生成的仿真流水图以及仿真热点函数等信息可视化呈现文件visualize_data.bin,该文件可通过Ascend Insight工具进行可视化展示,具体使用方法请参考MindStudio Ascend Insight用户指南