news 2026/5/9 21:53:18

CANN/CATLASS性能调优指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/CATLASS性能调优指南

在CATLASS样例工程进行性能调优

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

CANN对算子开发的两个场景——单算子与整网开发,分别提供了对应的性能调优工具:msProfProfiling

性能调优工具简介

msProf简介

msProf是单算子性能分析工具,对应的指令为msprof opmsopprof

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

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

Profiling简介

Profiling是整网性能分析工具,对应的指令为msprof

Profiling工具提供了AI任务运行性能数据、昇腾AI处理器系统数据等性能数据的采集和解析能力。

其中,msprof采集通用命令是性能数据采集的基础,用于提供性能数据采集时的基本信息,包括参数说明、AI任务文件、数据存放路径、自定义环境变量等。

msProf进行单算子性能分析

00_basic_matmul为例,演示基于msProf的性能分析过程。

上板性能采集

通过上板性能采集,可以直接测定算子在NPU卡上的运行时间,可判断性能是否初步达到预期标准。

msprof op使用示例
  1. 参考快速上手,编译算子样例。
  2. 使用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为0,1,2,3的Device export ASCEND_RT_VISIBLE_DEVICES=0,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 # UB,L1和主存储器读写带宽速率,单位GB/s ├──MemoryL0.csv # L0A,L0B,和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使用示例
  1. 编译脚本增加选项--simulator, 以simulator模式编译算子。
bash scripts/build.sh --simulator 00_basic_matmul
  • 这个选项实际不会改变编译的二进制程序,区别为是否输出第2步的仿真器路径提示。
  1. 编译完成后,根据提示,加载仿真器二进制路径。
# 根据第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
  1. 切换到可执行文件的编译目录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操作(如AddDiv)映射为Scalar操作导致性能结果明显异常(vector_ratio<10%scalar>90%),这是编译优化等级造成的,可在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使用示例

  1. 基于快速上手,打开工具的编译开关--enable_profiling, 使能Profiling API编译算子样例。
bash scripts/build.sh --enable_profiling 00_basic_matmul
  1. 切换到可执行文件的编译目录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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 21:53:06

智能电网安全:基于可信AI的主动检测与风险解释框架实践

1. 项目概述&#xff1a;当电网遇上AI&#xff0c;安全防御如何“可信”&#xff1f;干了十几年能源和网络安全&#xff0c;我越来越觉得&#xff0c;现在的智能电网安全&#xff0c;有点像在给一个高速奔跑的巨人做心脏搭桥手术——系统越来越复杂&#xff0c;数据量爆炸式增长…

作者头像 李华
网站建设 2026/5/9 21:49:34

终极免费方案:3分钟解锁网易云音乐NCM格式,实现音乐自由

终极免费方案&#xff1a;3分钟解锁网易云音乐NCM格式&#xff0c;实现音乐自由 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经遇到过这样的困扰&#xff1f;从网易云音乐下载的歌曲只能在官方App里播放&#xff0c;想要…

作者头像 李华
网站建设 2026/5/9 21:47:31

基于知识图谱与NLP的智能食谱推荐系统:从数据构建到对话引擎

1. 项目概述&#xff1a;当AI遇上意大利面&#xff0c;一个开源食谱大脑的诞生如果你和我一样&#xff0c;既是个技术爱好者&#xff0c;又是个厨房新手&#xff0c;那你一定有过这样的经历&#xff1a;面对冰箱里零零散散的食材&#xff0c;脑子里一片空白&#xff0c;完全不知…

作者头像 李华
网站建设 2026/5/9 21:27:45

AI 驱动多渠道网络钓鱼攻击演化机理与闭环防御体系研究

摘要 当前网络钓鱼攻击已进入智能化、多通道协同的新阶段。KnowBe4 第七期《钓鱼威胁趋势报告》基于超 3000 个独特威胁主体的观测数据显示&#xff0c;86% 的钓鱼攻击由 AI 驱动&#xff0c;日历邀请钓鱼增长 49%&#xff0c;反向代理窃取 Microsoft 365 凭证攻击激增 139%&am…

作者头像 李华