指令流水图

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

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

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

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

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

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