下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

工具使用

msProf工具包含msprof op和msprof op simulator两种使用方式,msprof op通过MindStudio Insight展示计算内存热力图和Roofline分析图,msprof op simulator通过MindStudio Insight展示指令流水图和算子代码热点图,协助用户定位算子内存、算子代码以及算子指令的异常,实现全方位的算子调优。

  • 不支持在同一个Device侧同时拉起多个性能采集任务。
  • msProf工具的使用依赖CANN包中的msopprof可执行文件,该文件中的接口使用和msprof op一致,该文件为CANN包自带,无需单独安装。
  • 使用msprof op和msprof op simulator之前,用户需保证app功能正常。

msprof op

  1. 登录运行环境,需要先使用msprof op参数开启算子上板调优,再使用msprof op 可选参数 app [arguments]格式调用,可选参数的具体情况请参考表2。具体命令示例如下:
    msprof op --output=/home/projects/output /home/projects/MyApp/out/main    // --output为可选参数  /home/projects/MyApp/out/main为使用的app 
  2. 通过以下两种方式执行算子调优:
    • 基于可执行文件,以add_custom_npu为例。
      示例一:
      msprof op ./add_custom_npu
      示例二:
      msprof op --aic-metrics=<select_metrics> --output=./output_data ./add_custom_npu 
    • 基于输入算子二进制文件*.o的配置文件.json。
      msprof op --config=./add_test.json --aic-metrics=<select_metrics> --output=./output_data
  3. 命令完成后,会在默认路径或指定的“--output”目录下生成以“OPPROF_{timestamp}_XXX”命名的文件夹,在“--aic-metrics”全部开启时,结构示例如下:
    • 采集多卡多算子的场景。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      └──OPPROF_xxx
      ├── device0                  // 运行时使用昇腾AI处理器的ID
      └── device1                
        ├── OpName0                // OpName0为采集算子名称
         ├── 0                   // 表示算子调度顺序
          ├──dump              // 与单算子含义一致,存放过程件的文件夹
          └──xxx_yyy.csv       //xxx代表该算子生成的指标种类名,例如L2Cache,具体指标种类可参考中的csv文件介绍,yyy为csv文件的时序后缀,例如L2Cache_20240603022812284.csv
          └──visualize_data.bin  
        ├── OpName1               
         ├── 0
          ├──dump       
          └──xxx_yyy.csv
          └──visualize_data.bin  
        ├── OpName2         
         ├── 0
          ├── dump       
          └── xxx_yyy.csv
          └──visualize_data.bin 
      
    • 采集单卡多算子场景。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      └──OPPROF_xxx
      ├── OpName0                  // OpName0为采集算子名称
       ├── 0                     // 表示算子调度顺序
        ├──dump                // 与单算子含义一致,存放过程件的文件夹
        └──xxx_yyy.csv   //xxx代表该算子生成的指标种类名,例如L2Cache,具体指标种类可参考中的csv文件介绍,yyy为csv文件的时序后缀,例如L2Cache_20240603022812284.csv
        └──visualize_data.bin  
       ├── 1
        ├──dump       
        └──xxx_yyy.csv
        └──visualize_data.bin  
      ├── OpName1         
       ├── 0
        ├── dump       
        └── xxx_yyy.csv
        └──visualize_data.bin 
      
    • 采集单卡单算子场景。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      OPPROF_xxx
      ├── dump
      ├── ArithmeticUtilization.csv
      ├── L2Cache.csv
      ├── Memory.csv
      ├── MemoryL0.csv
      ├── MemoryUB.csv
      ├── OpBasicInfo.csv
      ├── PipeUtilization.csv
      └── ResourceConflictRatio.csv
      ├── visualize_data.bin 
      
      表1 msprof op文件介绍

      名称

      说明

      dump文件夹

      原始的性能数据,用户无需关注。

      ArithmeticUtilization.csv

      cube和vector类型的指令耗时和占比,可参考ArithmeticUtilization(cube及vector类型指令耗时和占比)

      L2Cache.csv

      L2 Cache命中率,可参考L2Cache(L2 Cache命中率)

      Memory.csv

      UB/L1/L2/主存储器采集内存读写带宽速率,可参考Memory(内存读写带宽速率)

      MemoryL0.csv

      L0A/L0B/L0C采集内存读写带宽速率,可参考MemoryL0(L0读写带宽速率)

      MemoryUB.csv

      mte/vector/scalar采集ub读写带宽速率,可参考MemoryUB(UB读写带宽速率)

      PipeUtilization.csv

      采集计算单元和搬运单元耗时和占比,可参考PipeUtilization(计算单元和搬运单元耗时占比)

      ResourceConflictRatio.csv

      UB上的 bank group、bank conflict和资源冲突在所有指令中的占比,可参考ResourceConflictRatio(资源冲突占比)

      OpBasicInfo.csv

      算子基础信息,包含算子名称、block dim和耗时等信息,可参考OpBasicInfo(算子基础信息)

      visualize_data.bin

      算子基础信息、计算单元负载和Roofline分析图等信息的可视化呈现文件,可参考计算内存热力图Roofline分析图

      说明:

      visualize_data.bin可通过MindStudio Insight工具进行可视化展示,具体使用方法请参考MindStudio Insight 用户指南

  4. 将visualize_data.bin文件导入MindStudio Insight后,将会展示计算内存热力图Roofline分析图

msprof op simulator

算子调优工具支持仿真环境下的性能数据采集和自动解析。

  • msProf工具的仿真功能需要运行在0卡上。若修改可见卡号,则会导致仿真失败。
  • 若用户仅需关注部分算子性能时,可在Atlas 推理系列产品Atlas A2训练系列产品/Atlas 800I 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
      )
  1. 登录运行环境,需要使用msprof op simulator开启算子仿真调优,并配合使用仿真可选参数和用户待调优程序(app [arguments])进行调优,仿真可选参数请参考表3。具体命令示例如下:
    msprof op simulator --output=/home/projects/output /home/projects/MyApp/out/main //  --output为可选参数  /home/projects/MyApp/out/main为使用的app
  2. 算子仿真调优可以通过以下两种方式执行:
    • 基于可执行文件,以add_custom_npu为例。
      msprof op simulator --output=./output_data ./add_custom_npu 
    • 基于输入算子二进制文件*.o的配置文件.json。
      msprof op simulator --config=./add_test.json --output=./output_data
  3. 命令完成后,会在指定的“--output”目录下生成以“OPPROF_{timestamp}_XXX”命名的文件夹,结构示例如下:
    • 采集单个算子场景。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      OPPROF_xxx
      ├── dump
      └── simulator
          ├── core0.veccore0       // 按照core*.veccore*或core*.cubecore*目录存放各核的数据文件
             ├── 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
          ├── core1.veccore0
             ├── core1.veccore0_code_exe.csv
             ├── core1.veccore0_instr_exe.csv
             └── trace.json
          ├── ... 
          ├── visualize_data.bin 
          └── trace.json      // 全部核的仿真指令流水图文件
      
    • 采集多个算子场景。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      └──OPPROF_xxx
      ├── OpName1           // OpName1为采集算子名称
       ├── 0              // 表示算子调度到的顺序
        ├── dump        // 与单算子含义一致,存放过程件的文件夹
        └──simulator    // 与单算子simulator文件夹内容一致,但simulator文件夹中的csv文件均会增加时序后缀,例如core*_code_exe_20240429111143146.csv
       ├── 1
        ├── dump        
        └──simulator
       ├── dump          // 存放过程件的文件夹
      ├── OpName2         
       ├── 0
        ├── dump       
        └── simulator
       ├── dump  
      
    表2 msprof op simulator文件介绍

    名称

    说明

    dump文件夹

    原始仿真生成的dump数据存放文件夹。

    simulator文件夹

    说明:

    dump数据文件分析结果存放文件夹。

    core*_code_exe.csv

    代码行耗时,*代表0~n核,以便用户快速确定编写的代码中最耗时的部分,可参考代码行耗时数据文件

    core*_instr_exe.csv

    代码指令详细信息,*代表0~n核,以便用户快速确定最耗时的指令,可参考代码指令信息文件

    trace.json

    仿真指令流水图文件,包括每个核的子文件以及全部核的汇总文件,可参考指令流水图

    visualize_data.bin

    仿真流水图和仿真热点函数等信息可视化呈现文件,具体请参见指令流水图 MindStudio Insight展示算子代码热点图

    说明:

    生成仿真流水图以及仿真热点函数等信息可视化呈现文件visualize_data.bin,该文件可通过MindStudio Insight工具进行可视化展示,具体使用方法请参考MindStudio Insight 用户指南

  4. 将trace.json文件导入Chrome浏览器或MindStudio Insight后,将会展示指令流水图
  5. 可选:将visualize_data.bin文件导入MindStudio Insight后,将会展示算子代码热点图指令流水图
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词