目录

Simulator性能仿真功能

CAModel性能仿真

[h2]功能介绍

算子可以在仿真器上进行性能仿真,目前主要支持CAModel仿真器。

  • 由于model本身存在准确性问题,CAModel建议只跑单核,仿真性能会比较准,多核一块跑比较慢,误差也大很多。

[h2]使用方法(命令行)

通过命令行进行性能仿真的关键步骤如下。

  1. 完成环境搭建,并准备好输入/标杆数据文件。

  2. 执行如下命令进行CAModel性能仿真,仅提供关键参数项示例,其他参数请参考Simulator仿真参数按需设置。

    ascendebug kernel --backend simulator --repo-type customize --json-file ${op_config_json_file} --core-type ${core_type} --chip-version ${chip_version} --work-dir ${work_dir} --block-num 1 --timeout 1200 ... {其他参数}

    一般情况下,CAModel仿真时运行比较慢,--timeout一般设置为1200秒,--block-num一般设置为1,开发者需按实际情况设置。

  3. 查看性能仿真结果,详细说明参见产物说明。

[h2]产物说明

CAModel仿真结果存放在${root}/${work_dir}/simulator路径下,其中${root}表示当前操作路径,${work_dir}表示调测工作空间,默认为/debug_workspace/${op_type}目录,${op_type}为算子名。目录结构示例如下。

├ ${op_type} // 算子名
├── simulator
│   ├── build // 存放NPU编译生成的中间文件
│   │   ├── launch_args.so
│   │   └── run_Makefile_0.sh
│   ├── dump
│   │   ├── camodel
│   │   │   ├── log // model执行日志
│   │   └── dump_data
│   │       ├── 0 // 核心编号
│   │       │   └── index_0 // index是dump接口的desc唯一标识值
│   │       └── index_dtype.json
│   ├── output // 存放NPU编译运行的输出文件
│   │   ├── z.bin // 运行输出原始数据
│   │   └── z.txt // 精度比对结果文件
│   └── src // 存放NPU编译生成的临时代码文件
│       └── _gen_args_${op_type}.cpp

Model仿真打点

[h2]功能介绍

算子进行CAModel仿真时,可对算子任意运行阶段进行打点,从而分析不同指令的流水图,以便进一步性能调优。

Kirin9020/Kirin9030/KirinX90暂不支持使用该方法进行调优。

[h2]使用方法

  1. 先在Kernel代码中的目标指令位置分别打上TRACE_START/TRACE_STOP,示例如下,起始/终止接口的说明详见Trace接口说明。

    TRACE_START(0x1);
    DataCopy(zGm, zLocal, this->totalLength);
    TRACE_STOP(0x1);
  2. 参考使用方法(命令行)中的命令行方式,执行算子仿真流程。

  3. 在CAModel仿真结果trace图上查看打点结果。

    如下图所示,其中USER_DEFINE_1_DELAY表示DataCopy指令下发到指令开始执行的时间,USER_DEFINE_1表示指令执行的时间。

    图1 仿真打点示意图

[h2]Trace接口说明

TRACE_START接口说明如下。

TRACE_STOP接口说明如下。