系统学习 AI 学习路径:从 GPU 运行时到推理、微调与 RAG 评估

ncu

Nsight Compute kernel 分析:看吞吐、内存、occupancy 与 warp stall,定位单个 kernel 的瓶颈

补充说明

Nsight Compute(ncu)是 NVIDIA 的 kernel 级性能分析器。它针对单个 CUDA kernel 采集硬件计数器,给出计算/内存吞吐、occupancy、warp stall、指令混合、缓存命中、寄存器和源码级指标。它回答“这个 kernel 是算力受限、带宽受限还是延迟受限”“为什么 occupancy 上不去”“哪条指令在等内存”。

ncu 需要 replay kernel 多次来采集不同指标,开销很大,不适合直接跑完整训练。典型流程:先用 nsys 找到耗时 kernel,再用 ncu 只分析这个 kernel 的少量 launch。

常用示例

# 采集完整指标集,生成报告
ncu --set full -o report ./app

# 只分析匹配名字的 kernel,限制 launch 次数
ncu --kernel-name regex:gemm --launch-count 1 ./app

# 只看指定指标
ncu --metrics sm__throughput.avg.pct_of_peak_sustained_elapsed,\
dram__throughput.avg.pct_of_peak_sustained_elapsed ./app

# 采集后打开图形界面
ncu-ui report.ncu-rep
# 按 launch skip/count 控制采样范围
ncu --launch-skip 10 --launch-count 1 ./app

# 查看可用 section
ncu --list-sections

# 只采集 SpeedOfLight 和 Occupancy
ncu --section SpeedOfLight --section Occupancy ./app

分析时先看 SpeedOfLight 判断 compute/memory 哪个接近峰值,再看 MemoryWorkloadAnalysis、Occupancy、SchedulerStats、WarpStateStats,最后用 SourceCounters 定位到源码行。

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. 什么情况下用 ncu,什么情况下用 nsys?
  2. ncu 为什么要 replay kernel?这对性能数字有什么影响?
  3. occupancy 很高但 kernel 仍然慢,可能是什么原因?
答案
  1. 先用 nsys 看系统时间线、找耗时 kernel 和重叠问题;确定具体 kernel 后,用 ncu 分析其计算/内存吞吐、occupancy 和 stall。
  2. 单次运行无法采集所有硬件计数器,ncu 会多次 replay kernel;replay 会改变缓存/时钟状态并增加开销,不能把耗时直接当真实性能。
  3. 可能受内存延迟、指令依赖、分支发散、同步或缓存命中率限制;要结合 WarpStateStats、MemoryWorkloadAnalysis 和源码指标判断。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令