CAModel性能仿真
功能介绍
算子在仿真器上使用CAModel模式拉起msprof op simulator进行性能仿真,msprof op simulator可通过MindStudio Insight展示指令流水图和算子代码热点图,协助用户定位算子内存、算子代码以及算子指令的异常,实现全方位的算子调优。msprof op simulator具体使用情况请参见工具使用的msprof op simulator。

开启CAModel后,调测工具不会再进行精度比对。
使用方法(命令行)
- 完成环境搭建,并准备好输入/标杆数据文件。
- 执行如下命令进行CAModel性能仿真,仅提供关键参数项示例,其他参数请参考Simulator仿真参数按需设置。
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,用户需按实际情况设置。
- 查看性能仿真结果,详细说明参见产物说明。
使用方法(API)
- 完成环境搭建,并准备好输入/标杆数据文件。
- 构建算子信息。调用DebugOp类里input系列接口(如tensor_input、custom_input等),设置算子的输入、输出、属性值等信息。
- 创建调试对象并初始化工作空间。调用create_op_executor接口,创建调试对象op_executor,用户可传入${work_dir}参数手动设置工作空间。
- (可选)参考Tiling调测功能 > 使用方法(API)章节,调用Tiling调测接口生成Tiling Info文件。
本步骤仅适用于没有Tiling Info文件的场景,需调用Tiling调测API生成Tiling Info。
- 调用NPU编译接口,进行算子源码编译,生成kernel.o文件。
- 通过CompileNpuOptions设置NPU编译相关的功能,如内存检测功能。
- 根据不同场景调用对应的NPU编译接口。
- 标准自定义算子场景: 调用compile_custom_npu接口。
- 核函数直调场景:调用compile_call_kernel_npu接口。
- ops_adv算子场景:调用compile_ops_adv_npu接口。
- 调用CAModel运行接口,在仿真器上运行核函数,生成算子流水图。
- 通过RunSimuOptions设置仿真运行相关的功能,并通过NpuCompileInfo设置NPU编译属性。
- 调用run_camodel接口。
- 查看性能仿真结果,详细说明参见产物说明。
产物说明
无论是命令行方式或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 // 全部核的仿真指令流水图文件
父主题: Simulator性能仿真功能