算子在仿真器上使用CAModel模式拉起msprof op simulator进行性能仿真,msprof op simulator可通过MindStudio Insight展示指令流水图和算子代码热点图,协助用户定位算子内存、算子代码以及算子指令的异常,实现全方位的算子调优。msprof op simulator具体使用情况请参见工具使用的msprof op simulator。
开启CAModel后,调测工具不会再进行精度比对。
ascendebug kernel --backend simulator --json-file ${op_config_json_file} --repo-type ${repo_type} --chip-version ${chip_version} --core-type ${core_type} --install-path ${cann_install_path} --work-dir ${work_dir} --block-num 1 --timeout 1200 ... {其他参数}
一般情况下,CAModel仿真时运行比较慢,--timeout一般设置为1200秒,--block-num一般设置为1,用户需按实际情况设置。
本步骤仅适用于没有Tiling Info文件的场景,需调用Tiling调测API生成Tiling Info。
无论是命令行方式或API方式,CAModel仿真结果存放在${root}/${work_dir}/simulator路径下,其中${root}表示当前操作路径,${work_dir}表示调测工作空间,默认为/debug_workspace/${op_type}目录,${op_type}为算子名。目录结构示例如下:
├ ${op_type} // 算子名 ├── simulator │ ├── build // 存放NPU编译生成的中间文件 │ ├── launch_args.so │ ├── output // 存放NPU编译运行的输出文件 │ ├── y.bin // 运行输出原始数据 │ ├── src // 存放NPU编译生成的临时代码文件 │ ├── _gen_args_${op_type}.cpp │ ├── OPPROF_{timestamp}_XXX │ ├── dump └── simulator ├── 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 // 全部核的仿真指令流水图文件