指令流水图

以指令维度展示时序关系,并关联调用栈快速追踪瓶颈位置。支持以下两种可视化呈现方式:

  • 添加 -g 编译选项会在生成的二进制文件中附带调试信息,建议限制带有调试信息的用户程序的访问权限,确保只有授权人员可以访问该二进制文件。
  • 若不使用llvm-symbolizer组件提供的相关功能,输入msProf的程序编译时不包含-g即可,msProf工具则不会调用llvm-symbolizer组件的相关功能。
  • 若用户仅需关注部分算子性能时,可在Atlas 推理系列产品Atlas A2训练系列产品单核内调用TRACE_STARTTRACE_STOP接口。并在编译配置文件中添加-DASCENDC_TRACE_ON,具体操作请参见添加-DASCENDC_TRACE_ON的方法。然后,才能生成该范围内的流水图信息。
  • 用户需在编译配置文件中添加-DASCENDC_TRACE_ON,具体修改方法可参考以下样例工程。
    • MatMulCustomSample算子工程,需编辑/MatMulCustomSample/KernelLaunch/MatMulInvocationNeo/cmake/npu_lib.cmake。
      ascendc_compile_definitions
      (
          ...
          -DASCENDC_TRACE_ON
      )
    • AddCustomSample算子工程,需编辑/AddCustomSample/FrameworkLaunch/AddCustom/op_kernel/CMakeLists.txt。
      add_ops_compile_options
      (
          ...
          -DASCENDC_TRACE_ON
      )

指令流水图介绍(以MindStudio Insight为例)

MindStudio Insight工具以时序图方式为用户提供指令在昇腾AI处理器上的运行情况,用户可通过分析时序图中的指令详情、指令执行时间、指令关联代码的调用栈及指令/流水间同步连线等信息,识别微观指令的时序优化点。

图1 时间线界面
  • 展示各Pipe中各指令的运行时长以及不同Pipe间的指令依赖关系,帮助用户分析流水排布间可能存在的性能优化点。
  • 支持将流水指令信息与代码关联,指导用户如何基于代码去优化流水排布。

通过观察Timeline各个层级上的耗时长短、间隙等判断对应指令和Pipe是否存在性能问题,如指令执行是否存在瓶颈、是否存在高耗时的指令等。