图片

在昇腾NPU算子开发过程中,开发者常常面临的挑战是:算子内部计算和内存搬运流水难以可视化分析。在以往,开发者通过跑性能仿真来获取算子的指令级流水图,性能仿真具有两个缺点:

仿真速度慢,大型算子可能要跑几小时甚至几天。

数据不精准,无法反馈板上真实的数据情况。

针对以上两个用户痛点,msOpProf(MindStudio Ops Profiler)基于昇腾950独有的机制,打造了上板流水图的功能。上板流水图是基于真实硬件采集的,展示层级为PIPE级流水,暂不支持指令级流水,提供一种算子性能快速分析手段,让用户从“不得不用仿真”的困境中走出来,多一种选择。结合流水图可视化利器,从数据采集到交互式诊断,让性能瓶颈无处遁形,将“黑盒算子”变为“白盒观测”!

实战演练: Ascend 950算子实战

以quant_matmul算子为例,从昇腾910迁移到昇腾950,性能对比为0.8,说明在不改代码的情况下,算子性能劣化,需要进行分析。

采集命令:

msprof op --aic-metrics=PipeTimeline,Default ./quant_matmul

主要针对以下几点进行分析:

真实耗时:精确捕获硬件执行时间

流水线占比:Cube/MTE/Vector/Scalar各阶段时间分布

内存带宽:GM→L1、GM→UB、UB→GM各路径带宽使用

跨核同步:AIC/AIV Flag等待时间

注:

1. GM 为global memory全局内存,由多个core共享

2. UB、L1、L0A、L0B、L0C、为core内的内存单元,但仍可能被多个流水访问

3.MTE1、MTE2、MTE3、Fixpipe为搬运管道,用于内存单元间数据传输

4.AIC:Ascend Instruction Controller(指令控制器)5.AIV:Ascend Instruction Vector(向量指令控制器)6.Fixpipe:固定搬运管道(用于数据在内存层级间快速流转)7.L0C直通UB:L0C缓存直接映射至UB,减少中间搬运

占比分析 —— “看占比、判瓶颈”的全景图

**核心能力:**将PipeUtilization.csv中的Pipe流水占比数据可视化,从Cube/MTE/Scalar/Vector四个维度判断瓶颈类型,一眼定位“问题流水线”。

分析过程

查看各个Pipe耗时占比(CSV 格式)

cat output/PipeUtilization.csv

关键指标:

aic_cube_ratio # Cube 计算占比
aic_mte2_ratio # GM→L1 搬运占比
aic_scalar_ratio # Scalar 控制占比
aiv_vec_ratio # Vector 计算占比

分析结论:quant_matmul算子MTE2占比过高

**场景痛点:**算子Cube占比仅26.5%,计算不饱和。

**医生处方:**查看PipeUtilization.csv,发现MTE2占比27.4%,Scalar占比25.5%,疑似内存瓶颈。

图片

**根因定位:**查看Memory.csv,发现AIV从GM读取5.84GB/s(workspace数据),AIC写入GM 128KB。这是因为quant_matmul 的Cube结果需要写回GM workspace,Vector 端再从GM读入UB,两次GM访问拖慢流水线。

时序分析 ——

“看时序、找空闲”的微观显微镜

**核心能力:**visualize_data.bin支持导入MindStudio Insight;trace.json支持导入Chrome Tracing或者MindStudio Insight,结合可视化界面可以逐事件分析流水线执行时序,精准定位同步等待、内存搬运串行等微观瓶颈。

分析过程

启动MindStudio Insight并加载visualize_data.bin文件。分析发现:在AIC完成计算后,把结果从L0C搬回GM上,AIV又从GM搬数据到UB,这里产生了大量的耗时,然而在昇腾950上,我们有L0C直通UB的方法!

图片

图1 优化前pipe流水

分析结论:流水可以通过L0C->UB实现性能优化

AIV利用AIC计算时间窗口预取scale参数,CUBE结果通过 Fixpipe直通UB,AIV无需读取。

优化前后对比

**流水图对比:**可以看到图中,在优化后,AIV少了一段MTE2搬运流水,提升了并行度。

图片

图2 优化前后pipe流水对比

**数据对比:**对比优化前后的关键事件时序。

图片

总结:两大利器,精准打击

图片

**一句话总结:**占比分析看“瓶颈类型”,时序分析看“执行细节”——两大利器合璧,性能瓶颈精准打击!

案例收益:

性能提升16.2%

GM访问减少100%

AIV GM带宽降低98%

立即体验:

查阅msOpProf官方文档https://gitcode.com/Ascend/msopprof/blob/master/docs/zh/user_guide/msopprof_user_guide.md,给你的算子做个全面诊断吧!

MindStudio Insight链接:

https://www.hiascend.com/developer/software/mindstudio/download?versionId=142&ids=44%2C26958bcc909e4cd48fa56d4c4a43ebec%2C105%2C50

图片

扫码体验msOpProf开源社区

图片

扫码进入MindStudio开源社区交流群

图片

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐