文件最后提交记录最后更新时间
3 个月前
1 个月前
1 个月前
3 个月前
1 个月前
README.md

基于MatmulLeakyRelu算子的profiling样例

概述

本样例基于MatmulLeakyRelu算子,演示了通过msProf采集上板的性能数据的方法。用户可根据输出的性能数据,快速定位算子的软、硬件性能瓶颈,提升算子性能的分析效率。

支持的产品

  • Ascend 950PR/Ascend 950DT
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品

目录结构介绍

├── msProf
│   ├── CMakeLists.txt          // 编译工程文件
│   ├── data_utils.h            // 数据读入写出函数
│   ├── matmul_leakyrelu.asc    // Ascend C算子实现 & 调用样例
│   └── scripts
│       ├── gen_data.py         // 输入数据和真值数据生成脚本文件
│       └── verify_result.py    // 真值对比文件

算子描述

MatmulLeakyRelu算子通过将矩阵乘加(Matmul)与LeakyRelu激活函数计算实现,具体功能描述可参考MatmulLeakyRelu算子详情章节。

msProf工具介绍

msProf工具是单算子性能分析工具。包含msprof op和msprof op simulator两种使用方式。该工具协助用户定位算子内存、算子代码以及算子指令的异常,实现全方位的算子调优。当前支持基于不同运行模式(上板或仿真)和不同文件形式(可执行文件或算子二进制.o文件)进行性能数据的采集和自动解析。

  • 上板性能采集

    通过上板性能采集,可以直接测定算子昇腾AI处理器上的运行时间。该方式适合在板环境中快速定位算子性能问题。

    基于可执行文件demo通过msprof op执行算子调优:

    msprof op ./demo
    
    • 性能数据说明
      命令完成后,会在默认目录下生成以“OPPROF_{timestamp}_XXX”命名的文件夹,性能数据文件夹结构示例如下:

      ├──dump                       # 原始的性能数据,用户无需关注
      ├──ArithmeticUtilization.csv  # cube/vector指令cycle占比
      ├──L2Cache.csv                # L2 Cache命中率,影响MTE2,建议合理规划数据搬运逻辑,增加命中率
      ├──Memory.csv                 # UB,L1和主存储器读写带宽速率
      ├──MemoryL0.csv               # L0A,L0B,和L0C读写带宽速率
      ├──MemoryUB.csv               # Vector和Scalar到UB的读写带宽速率
      ├──OpBasicInfo.csv            # 算子基础信息
      ├──PipeUtilization.csv        # 采集计算单元和搬运单元耗时和占比
      ├──ResourceConflictRatio.csv  # UB上的 bank group、bank conflict和资源冲突率在所有指令中的占比
      └──visualize_data.bin         # MindStudio Insight呈现文件
      

更多msProf工具使用方式请参考MindStudio工具算子调优(msProf)中的内容。

编译运行

在本样例根目录下执行如下步骤,编译并执行算子。

  • 配置环境变量

    请根据当前环境上CANN开发套件包的安装方式,选择对应配置环境变量的命令。

    • 默认路径,root用户安装CANN软件包

      source /usr/local/Ascend/cann/set_env.sh
      
    • 默认路径,非root用户安装CANN软件包

      source $HOME/Ascend/cann/set_env.sh
      
    • 指定路径install_path,安装CANN软件包

      source ${install_path}/cann/set_env.sh
      
  • 样例执行

    mkdir -p build && cd build;           # 创建并进入build目录
    cmake -DCMAKE_ASC_ARCHITECTURES=dav-2201 ..;make -j;                     # 编译工程
    python3 ../scripts/gen_data.py        # 生成测试输入数据
    msprof op ./demo                      # 基于可执行文件demo通过msprof op执行算子调优
    python3 ../scripts/verify_result.py output/output.bin output/golden.bin   # 验证输出结果是否正确,确认算法逻辑正确
    
  • 编译选项说明

选项 可选值 说明
CMAKE_ASC_ARCHITECTURES dav-2201(默认)、dav-3510 NPU 架构:dav-2201 对应 Atlas A2 训练系列产品/Atlas A2 推理系列产品和Atlas A3 训练系列产品/Atlas A3 推理系列产品,dav-3510 对应 Ascend 950PR/Ascend 950DT
  • 执行结果 执行结果如下,说明精度对比成功。
    test pass!