基于Gather算子的profiling样例
概述
本样例基于Gather算子,演示了通过msProf采集上板的性能数据的方法。用户可根据输出的性能数据,快速定位算子的软、硬件性能瓶颈,提升算子性能的分析效率。
支持的产品
- Ascend 950PR/Ascend 950DT
支持的CANN软件版本
- >= CANN 9.0.0
目录结构介绍
├── msProf
│ ├── CMakeLists.txt // cmake编译文件
│ ├── gather.asc // SIMT实现gather调用样例
│ └── README.md
算子描述
gather算子实现了从形状为100000 * 128的二维向量中获取指定索引的12288行数据的功能,具体功能描述可参考Gather算子详情章节。
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命中率 ├──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呈现文件
-
用户可以使用 MindStudio Insight 打开 visualize_data.bin 文件可视化查看算子信息,包含算子基础信息、核间负载分析、计算工作负载分析、内存负载分析等。更多msProf工具使用方式请参考《算子开发工具》中“算子调优 msOpProf”的内容。
编译运行
在本样例根目录下执行如下步骤,编译并执行算子。
-
配置环境变量
请根据当前环境上CANN开发套件包的安装方式,配置环境变量。
source ${install_path}/cann/set_env.sh说明:
${install_path}为CANN包安装目录,未指定安装目录时默认安装至/usr/local/Ascend下。 -
样例执行
在本样例目录下执行如下命令。
mkdir -p build && cd build; # 创建并进入build目录 cmake -DCMAKE_ASC_ARCHITECTURES=dav-3510 ..;make -j; # 编译工程 msprof op ./demo # 基于可执行文件demo通过msprof op执行算子调优编译选项说明
选项 可选值 说明 CMAKE_ASC_ARCHITECTURESdav-3510NPU 架构:本样例仅支持 dav-3510(Ascend 950PR/Ascend 950DT) 执行结果如下,说明精度对比成功。
[Success] Case accuracy is verification passed.