Profiling数据采集功能
功能介绍
性能分析工具(Profiling)用于采集和分析算子在昇腾AI处理器上运行阶段的关键性能指标,用户可根据输出的性能数据,快速定位软、硬件性能瓶颈,提升算子运行性能。
Profiling数据采集功能只有NPU板端运行场景支持,其他场景不支持。
使用方法(命令行)
- 执行如下命令使能Profiling功能,这里仅提供关键配置项,其他配置项说明请参考NPU调测参数,用户按需配置即可。
- 基础功能:无需配置,默认采集PipeUtilization数据。
ascendebug kernel --backend npu --profiling ... {其他NPU调测参数}
- 高级功能(可选):如需采集其他数据,可进一步设置${profiling_metrics}。
ascendebug kernel --backend npu --profiling ${profiling_metrics} ... {其他NPU调测参数}
${profiling_metrics}支持的取值如下:
- Atlas 200/300/500 推理产品:ArithmeticUtilization、PipeUtilization(默认值)、Memory、MemoryL0、MemoryUB、ResourceConflictRatio
- Atlas 200/500 A2推理产品:ArithmeticUtilization、PipeUtilization、Memory、MemoryL0、MemoryUB、ResourceConflictRatio、L2Cache、PipelineExecuteUtilization(默认值)
- Atlas 推理系列产品:ArithmeticUtilization、PipeUtilization(默认值)、Memory、MemoryL0、MemoryUB、ResourceConflictRatio
- Atlas 训练系列产品:ArithmeticUtilization、PipeUtilization(默认值)、Memory、MemoryL0、MemoryUB、ResourceConflictRatio
- Atlas A2训练系列产品/Atlas 800I A2推理产品:ArithmeticUtilization、PipeUtilization(默认值)、Memory、MemoryL0、MemoryUB、ResourceConflictRatio、L2Cache
更多关于数据采集高级功能的介绍可参考《性能分析工具使用指南》“msprof命令行工具>性能数据采集>采集AI任务运行性能数据”章节中--aic-metrics配置项。
- 基础功能:无需配置,默认采集PipeUtilization数据。
- 检查是否成功使能Profiling。
当打屏日志中有调用msprof开启profiling的调用信息,并且有“npu kernel run end” 信息则表示Profiling执行完成。
- 查看结果文件。Profiling结果文件存放在--work-dir目录下,详细说明参见调测产物。
使用方法(API)
- 完成环境搭建,并准备好输入/标杆数据文件。
核函数直调工程场景下,需提前配置好核函数源码信息OpKernelInfo。
- 构建算子信息。调用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文件。
- 标准自定义算子场景:调用compile_custom_npu接口。
- 核函数直调场景:调用compile_call_kernel_npu接口。
- ops_adv算子场景:调用compile_ops_adv_npu接口。
- 调用Profiling运行接口run_profiling,采集算子运行阶段关键的性能指标数据。
- 查看结果文件。Profiling结果文件存放在${work_dir}目录下,详细说明参见调测产物。
调测产物
无论是命令行方式或API方式,Profiling解析结果存放在${root}/${work_dir}/npu/output路径下。其中${root}表示当前操作路径,${work_dir}表示调测工作空间,默认为/debug_workspace/${op_type}目录,${op_type}为算子名。目录结构示例如下,默认情况下采集到的文件如表1所示。
├ ${op_type}(算子名) ├── npu │ ├── build (存放NPU编译生成的中间文件) │ ├── launch_args.so │ ├── output (存放NPU编译运行的输出文件及精度比对结果) │ ├── y.bin (运行输出原始数据) │ ├── y.txt (精度比对结果文件) │ ├── PROF_00000x_xxxx_xxx (存放Profiling结果文件) │ ├── mindstudio_profiler_output │ ├── task_time_*.csv │ ├── prof_rule_*.json │ ├── op_summary_*.csv │ ├── op_statistic_*.csv │ ├── api_statistic_*.csv │ ├── step_trace_*.csv │ ├── step_trace_*.json │ ├── msprof_*.json │ ├── src(存放NPU编译生成的临时代码文件) │ ├── _gen_args_${op_type}.cpp
文件名 |
说明 |
备注 |
---|---|---|
task_time_*.csv |
Task Scheduler任务调度信息。 |
关于性能文件的详细介绍可参见《性能分析工具使用指南》中“性能数据文件参考”。 |
prof_rule_*.json |
调优建议。 |
|
op_summary_*.csv |
AI Core和AI CPU算子数据。 |
|
op_statistic _*.csv |
AI Core和AI CPU算子调用次数及耗时统计。 |
|
api_statistic_*.csv |
用于统计CANN层的API执行耗时信息。 |
|
step_trace_*.json |
(可选)迭代轨迹数据,每轮迭代的耗时。单算子场景下无此性能数据文件。 |
|
step_trace_*.csv |
(可选)迭代轨迹数据。单算子场景下无此性能数据文件。 |
|
msprof_*.json |
timeline数据总表。 |
|
注:“*”表示{timestamp}时间戳。 |