工具概述

msProf工具用于采集和分析运行在昇腾AI处理器上算子的关键性能指标,用户可根据输出的性能数据,快速定位算子的软、硬件性能瓶颈,提升算子性能的分析效率。

当前支持基于不同运行模式(上板或仿真)和不同文件形式(可执行文件或算子二进制.o文件)进行性能数据的采集和自动解析。

  • msProf工具的使用依赖CANN包中的msopprof可执行文件,该文件中的接口使用和msprof op一致,该文件为CANN包自带,无需单独安装。
  • msProf工具不支持多线程算子的检测。
  • msProf工具的仿真功能需要运行在0卡上。若修改可见卡号,则会导致仿真失败。
  • msProf工具的上板功能配置为--aic-metrics=TimelineDetail时, 会启用仿真功能。此时,若修改可见卡号,会导致上板和仿真都报错。

功能特性

算子调优工具使用请参考工具使用,通过MindStudio Insight展示计算内存热力图、Roofline瓶颈分析图、通算流水图(MC2算子)、指令流水图、算子代码热点图以及性能数据文件等单算子调优能力,具体请参考表1

表1 msProf工具功能特性

功能

链接

计算内存热力图

计算内存热力图

Roofline瓶颈分析图

Roofline瓶颈分析图

通算流水图(MC2算子)

通算流水图(MC2算子)

指令流水图

指令流水图

算子代码热点图

算子代码热点图

性能数据文件

msProf性能数据文件

  • 通过键盘输入“CTRL+C”后,算子执行将会被停止,工具会根据当前已有信息生成性能数据文件。若不需要生成该文件,可再次键盘输入“CTRL+C”指令。
  • 若未指定--output参数,需确保群组和其他组的用户不具备当前路径的上一级目录的写入权限。

命令汇总

用户需自行保证可执行文件或用户程序(application)执行的安全性。
  • 建议限制对可执行文件或用户程序(application)的操作权限,避免提权风险。
  • 不建议进行高危操作(删除文件、删除目录、修改密码及提权命令等),避免安全风险。

msprof op分段调优原则

  1. 使用--launch-skip-before-match命令筛选算子调优范围,筛选原则如下:

    • 若已配置--launch-skip-before-match,从第一个算子开始到指定数目的算子不进行采集,仅对指定数目之后的算子开始采集。
    • 若未配置不进行筛选。

  2. 步骤一的基础上,使用--mstx命令筛选算子调优范围,筛选原则如下:

    • 若已配置--mstx,只采集mstxRangeStartA和mstxRangeEnd接口使能范围内的算子。
    • 若未配置,不进行筛选。

  3. 步骤二的基础上,使用--kernel-name命令筛选算子调优范围,筛选原则如下:

    • 若已配置--kernel-name,只采集--kernel-name范围内的算子。
    • 若未配置--kernel-name,则只对程序运行过程中调度的第一个算子进行采集。

  4. 步骤三的基础上,使用--aic-metrics命令筛选算子调优数据的采集项,筛选原则如下:

    • 若已配置--aic-metrics,选择算子性能指标的采集项。
    • 若未配置--aic-metrics,默认采集Default部分的算子性能指标,KernelScale、TimelineDetail、Roofline、Occupancy部分的算子性能指标将无法采集。

  5. 通过步骤一步骤四逐层过滤,可获得实际的调优算子数量以及性能指标的采集范围。
  6. 使能--kill=on功能的情况下,将实际调优的算子数量与--launch-count值进行对比,从而决定是否需要自动停止程序。

    若实际已调优算子数量小于等于--launch-count值,则继续执行。否则,实际已调优算子数量达到--launch-count设置的算子数值时,会自动停止程序。

调用场景

支持如下调用算子的场景:
  • Kernel直调算子开发:Kernel直调。
    • Kernel直调场景,详细信息可参考Kernel直调算子开发
    • Kernel直调的场景,需先配置好前置条件,然后执行以下命令:
      msprof op simulator ./main  // main为用户算子程序名称,包含待调优算子的程序名
    • 可选:若算子已在上板运行模式下,但用户又需要在不重新编译的情况下,对其进行仿真调优,可通过以下操作步骤实现。
      • 在任意目录下,创建一个指向libruntime_camodel.so的软连接,名称为libruntime.so。
        ln -s /{simulator_path}/lib/libruntime_camodel.so /{so_path}/libruntime.so  //例如,若使用root用户默认路径安装CANN包,simulator_path为/usr/local/Ascend/ascend-toolkit/latest/tools/simulator/Ascendxxxyy
      • 将创建的软链接的父目录加入到环境变量LD_LIBRARY_PATH中。
        export LD_LIBRARY_PATH={so_path}:$LD_LIBRARY_PATH
  • 工程化算子开发:单算子API调用。
    • 单算子API调用的场景,可参考单算子API调用
    • 单算子API执行的场景,需先配置好前置条件,然后执行以下命令:
      msprof op simulator ./main  // main为用户算子程序名称,包含待调优算子的程序名
  • AI框架算子适配:PyTorch框架。
    • 通过PyTorch框架进行单算子调用的场景,详细信息可参考单算子适配OpPlugin插件开发
    • 通过PyTorch框架进行单算子调用的场景,需先配置好前置条件,然后执行以下命令:
      msprof op simulator python a.py  // a.py为用户算子程序名称,包含待调优算子的程序名