CANN/CATLASS性能调优指南
在CATLASS样例工程进行性能调优【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlassCANN对算子开发的两个场景——单算子与整网开发分别提供了对应的性能调优工具msProf和Profiling。性能调优工具简介msProf简介msProf是单算子性能分析工具对应的指令为msprof op或msopprof。msProf工具用于采集和分析运行在昇腾AI处理器上算子的关键性能指标用户可根据输出的性能数据快速定位算子的软、硬件性能瓶颈提升算子性能的分析效率。当前支持基于不同运行模式上板或仿真和不同文件形式可执行文件或算子二进制.o文件进行性能数据的采集和自动解析。Profiling简介Profiling是整网性能分析工具对应的指令为msprof。Profiling工具提供了AI任务运行性能数据、昇腾AI处理器系统数据等性能数据的采集和解析能力。其中msprof采集通用命令是性能数据采集的基础用于提供性能数据采集时的基本信息包括参数说明、AI任务文件、数据存放路径、自定义环境变量等。用msProf进行单算子性能分析以00_basic_matmul为例演示基于msProf的性能分析过程。上板性能采集通过上板性能采集可以直接测定算子在NPU卡上的运行时间可判断性能是否初步达到预期标准。msprof op使用示例参考快速上手编译算子样例。使用msprof op *可选参数* app [arguments]格式调用msProf工具。msprof op --application./00_basic_matmul 256 512 1024 0常用参数如下参数是否必选说明取值配套参数/注意事项--application必选二选一指定可执行文件/执行指令有效路径或命令与--config互斥--config必选二选一指定二进制文件.o有效路径与--application互斥--kernel-name可选指定采集的算子名称支持模糊匹配和多个采集例conv*或add\|mul需配合--launch-count使用--launch-count可选设置最大采集算子数量1~100 整数默认 1需配合--kernel-name使用--warm-up可选预热次数解决芯片未提频问题整数默认 5小 shape 场景建议提高到 30--output可选指定数据输出路径有效路径默认当前目录需确保路径可写更多参数可参考msProf工具概述。⚠ 注意事项工具默认会读取第一个算子的性能使用example进行调测时可直接获取到结果若接入其他工程工程中可能存在其他算子虽然只跑某一个算子的用例如果性能分析时未通过--kernel-name指定算子名称则可能读取不到结果。可设置环境变量ASCEND_RT_VISIBLE_DEVICES指定上板调测的Device Id号# 指定当前进程仅可使用Device Id为0123的Device export ASCEND_RT_VISIBLE_DEVICES0,1,2,3 msprof op ./00_basic_matmul 256 512 1024 0性能数据说明性能数据文件夹结构示例├──dump # 原始的性能数据用户无需关注 ├──ArithmeticUtilization.csv # cube/vector指令cycle占比建议优化算子逻辑减少冗余计算指令 ├──L2Cache.csv # L2 Cache命中率影响MTE2建议合理规划数据搬运逻辑增加命中率 ├──Memory.csv # UBL1和主存储器读写带宽速率单位GB/s ├──MemoryL0.csv # L0AL0B和L0C读写带宽速率单位GB/s ├──MemoryUB.csv # Vector和Scalar到UB的读写带宽速率单位GB/s ├──OpBasicInfo.csv # 算子基础信息 ├──PipeUtilization.csv # pipe类指令耗时和占比建议优化数据搬运逻辑提高带宽利用率 └──ResourceConflictRatio.csv # UB上的 bank group、bank conflict和资源冲突率在所有指令中的占比 建议减少/避免对于同一个bank读写冲突或bank group的读读冲突性能流水仿真通过仿真可以获得流水图、指令与代码行映射、代码热点图、内存热点图等可视化数据以便进一步分析优化算子计算瓶颈。msprof op simulator使用示例编译脚本增加选项--simulator 以simulator模式编译算子。bash scripts/build.sh --simulator 00_basic_matmul这个选项实际不会改变编译的二进制程序区别为是否输出第2步的仿真器路径提示。编译完成后根据提示加载仿真器二进制路径。# 根据第1步的实际输出执行 export LD_LIBRARY_PATH/usr/local/Ascend/ascend-toolkit/latest/tools/simulator/Ascendxxxyy/lib:$LD_LIBRARY_PATH export LD_PRELOAD/usr/local/Ascend/ascend-toolkit/latest/tools/simulator/Ascendxxxyy/lib/libruntime_camodel.so:/usr/local/Ascend/ascend-toolkit/latest/tools/simulator/Ascendxxxyy/lib/libnpu_drv_camodel.so切换到可执行文件的编译目录output/bin下 使用msprof op simulator执行算子样例程序。cd output/bin # 可执行文件名 |矩阵m轴|n轴|k轴|Device ID可选 msprof op simulator ./00_basic_matmul 256 512 1024 0⚠ 注意事项若需要查看代码热点图需要在examples/CMakeLists.txt中增加add_compile_options(SHELL:$$COMPILE_LANGUAGE:ASCEND:-Xaicore-start -g -Xaicore-end)。性能结果中有大量明显Vector操作如Add、Div映射为Scalar操作导致性能结果明显异常(vector_ratio10%scalar90%)这是编译优化等级造成的可在examples/CMakeLists.txt中增加add_compile_options($$COMPILE_LANGUAGE:ASCEND:-Xaicore-start -O3 -Xaicore-end)。仿真只能在0卡运行不能指定NPU卡号。仿真数据说明├──dump # 原始的性能数据用户无需关注 └──simulator # 算子基础信息 ├──core0.cubecore0 ├──... ├──core23.cubecore0 ├──trace.json # Edge/Chrome Trace Viewer/Perfetto呈现文件 └──visualize_data.bin # MindStudio Insight呈现文件性能数据可视化查看数据可视化依赖MindStudio Insight工具需要提前下载安装。代码热点图获取仿真输出文件夹simulator下的visualize_data.bin通过MindStudio Insight工具加载bin文件查看代码热点图。指令流水图使用Edge/Chrome Trace Viewer/Perfetto呈现根据浏览器选择以下工具Edge Trace Viewer(Edge浏览器)Chrome Trace Viewer(Chrome浏览器/基于Chrome内核的浏览器)Perfetto(通用)导入trace.json即可查看仿真指令流水图。使用MindStudio Insight呈现获取仿真输出文件夹simulator/下的visualize_data.bin。通过MindStudio Insight工具加载bin文件查看仿真流水图。用MindStudio Insight查看更多可视化数据msProf工具采集到的数据可导入可视化工具MindStudio Insight中以便进一步分析算子计算瓶颈。将visualize_data.bin导入工具内即可可视化地分析算子性能。用Profiling进行整网性能分析虽然CATLASS只提供单算子的调用示例但单算子调用示例也可使用Profiling工具进行性能分析。下面以00_basic_matmul为例进行演示分析。msProf使用示例基于快速上手打开工具的编译开关--enable_profiling 使能Profiling API编译算子样例。bash scripts/build.sh --enable_profiling 00_basic_matmul切换到可执行文件的编译目录output/bin下用msProf执行算子样例程序。cd output/bin # 可执行文件名 |矩阵m轴|n轴|k轴|Device ID可选 msprof ./00_basic_matmul 256 512 1024 0可参考msProf性能数据文件参考了解性能数据各文件的功能。【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考