跳转至

msopprof simulator模式性能数据

概述

msOpProf simulator运行模式通过仿真器对算子进行指令级性能仿真,采集完成后会在指定的--output目录下生成以OPPROF_{timestamp}_XXX命名的文件夹,输出以下性能数据文件。

输出目录结构:

OPPROF_{timestamp}_XXX
├── dump                                        // 原始仿真dump数据存放文件夹
└── simulator                                   // dump数据解析结果存放文件夹
    ├── core0.veccore0                          // 各核的数据文件目录
    │   ├── 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
    ├── ...
    ├── visualize_data.bin                      // 仿真流水图和热点函数可视化文件
    └── trace.json                              // 全部核的仿真指令流水图汇总文件

说明:

  • 目录按core*.veccore*(Vector Core)或core*.cubecore*(Cube Core)格式存放各计算单元的数据。
  • 多算子场景下,csv 文件名会增加时序后缀,如core*_code_exe_20240429111143146.csv
  • 单算子场景下,visualize_data.bin和汇总trace.json位于simulator/根目录。

代码行耗时数据文件

代码行耗时数据文件为core*_code_exe.csv,*代表核编号(0~n),存放各计算单元上每条代码行的执行耗时信息,协助用户快速定位代码中最耗时的部分。

图 1 core*_code_exe.csv文件

表 1 字段说明

字段名 字段解释
code 代码行,格式为代码文件路径:行号
call_count 对应代码行所涉及指令的调用次数。
cycles 该代码行所涉及的指令在AI Vector Core/AI Cube Core上执行的cycle总数。
running_time(us) 代码行的有效执行时间,单位μs。

代码指令信息文件

代码指令详细信息文件为core*_instr_exe.csv,*代表核编号(0~n),存放各计算单元上每条指令的详细执行信息,协助用户识别最耗时的单条指令。

图 2 core*_instr_exe.csv文件

表 2 字段说明

字段名 字段解释
instr 代码指令名称。
addr 代码指令对应的PC地址。
pipe PIPE类型,包括指令队列(MTE1/MTE2/MTE3)和计算单元(VEC/CUBE)。
call_count 该指令的调用次数。
cycles 该指令在AI Vector Core/AI Cube Core上执行的cycle总数。
running_time(us) 指令的有效执行时间,单位μs。
detail 指令执行的详细参数,如数据搬运的源/目的地址、长度、步幅等。

可视化数据文件(visualize_data.bin)

visualize_data.bin文件为仿真性能数据的可视化呈现文件,需导入MindStudio Insight进行查看。导入后可展示以下内容:

功能 说明
指令流水图 以指令维度展示时序关系,并关联调用栈快速定位瓶颈。
算子代码热点图 展示算子源码与指令集的映射关系及耗时情况,协助识别热点代码。

图 3 算子代码热点图示例

关于MindStudio Insight的导入操作,请参见《MindStudio Insight用户指南》的"导入性能数据"章节。


指令流水图文件(trace.json)

trace.json文件为仿真指令流水图的原始数据文件,包括各核的子文件(位于core*.veccore*/core*.cubecore*/目录下)以及全部核的汇总文件(位于simulator/根目录下)。

trace.json可通过以下两种方式查看:

  • Chrome浏览器:在Chrome地址栏输入chrome://tracing,将trace.json文件拖入窗口即可查看。

    图 4 Chrome浏览器查看指令流水图

    使用快捷键(W:放大,S:缩小,A:左移,D:右移)可进行浏览。 - MindStudio Insight:将trace.json导入MindStudio Insight进行可视化呈现,展示内容包括指令流水时序以及各PIPE的执行状态。

说明:

  • 单核的trace.json文件仅展示该核的指令流水。
  • 汇总的trace.json文件展示所有核的指令流水汇总。
  • 若用户仅需关注部分算子性能,可在单核内调用TRACE_STARTTRACE_STOP接口,并在编译配置文件中添加-DASCENDC_TRACE_ON,即可生成指定范围内的流水图信息。具体接口参见《Ascend C算子开发接口》中的"算子调测API"。