写出一个可以运行的 CUDA Kernel 并不难,难的是回答一个问题:这个 Kernel、这条训练或推理流程,真的跑出了硬件该有的性能吗?如果没有,问题在哪里?
这个目录里的材料基本都是为了回答这类问题,涉及三类工具:
- Nsight Compute 抓单个 Kernel 的执行质量,看 SM occupancy、内存吞吐这些细节。
- Nsight Systems 拉远视角,展示 CPU 与 GPU 交互、NCCL 通信、内核启动间的间隙,寻找时间线上的气泡。
- nvbandwidth 负责把 HBM 和 PCIe 的实测带宽和理论上限做对比,验证硬件和拓扑是否存在短板。
把这三类工具配合起来,就可以较全面地定位训练/推理中的计算、内存和通信瓶颈。
- NVIDIA Nsight Compute: CUDA 内核级性能分析器
- NVIDIA Nsight Systems: 系统级性能分析器
- nvprof: 传统 CUDA 性能分析工具(已废弃,由 Nsight Compute/Nsight Systems 替代)
- nvbandwidth: NVIDIA GPU 带宽测量工具
相关文档:
- CUDA 内核性能分析指南:NVIDIA 官方 CUDA 内核性能分析详细指南
- nvbandwidth 深度解析:NVIDIA GPU 带宽测量工具全指南
- PCIe 链路状态与带宽实测:零依赖 CUDA H2D/D2H 带宽测试程序,基于 RTX 5090 PCIe Gen 5 实测
- GPU 显存带宽测试:片内 vs 片外:HBM D2D 带宽实测 (762-1341 GB/s),与 PCIe 带宽形成完整对比
- GPU 功耗管理实战:RTX 5090 功耗限制、时钟控制、Power Smoothing/Power Profiles 兼容性实测
- PCIe 传输效率曲线:1 KB - 1 GB 区间 PCIe 带宽爬升曲线,揭示效率拐点与最小传输大小建议
- Nsight Compute CLI 实战:
ncu完全指南——从安装、基础用法到 kernel 级指标逐 section 解读 - Nsight Systems CLI 快速入门:
nsys系统级时间线分析——CPU-GPU 交互、API 开销、三件套工作流 - GPU P2P 带宽实测:
simpleP2P实测 NVLink P2P 239 GB/s,对比 P2P/PCIe/片内三级带宽,含拓扑对训练策略影响 - GPU 间数据传输方法实测:5 种方法(cudaMemcpyPeer / D2D / CPU relay / Zero-Copy / Unified Memory)A100 实测对比,带宽差距 60×,含统一测试程序和决策树
CUDA 矩阵乘法性能优化案例:
通过 Nsight 工具对 CUDA 矩阵乘法的不同实现进行定量分析,包括:
- 全局内存访问模式优化
- 共享内存(Shared Memory)优化
- 指令级并行(ILP)优化
详细分析请参考:使用 Nsight 工具定量分析 CUDA 矩阵乘法几种实现
- NVIDIA Nsight Compute Documentation
- NVIDIA Nsight Systems Documentation
- GPU 利用率是一个误导性指标:解释为什么高 GPU 利用率并不总是意味着高效计算。
- CUDA 编程模型入门