StackSense ← 回到地图
数据与 AI / GPU

CUDA / GPU 编程

GPU 不是「多核 CPU」,它是为吞吐量设计的大规模并行机器:一个 SM 上几千个寄存器、上百 KB shared memory、上万线程同时在飞。这个模块从硬件视角把 CUDA 的执行模型、内存层级、同步原语拆明白,让你能自己写 kernel、读懂 CUTLASS / FlashAttention 的内循环、从 Nsight Compute 的 metric 就能判断该去哪里优化。

GPU 不是「多核 CPU」,它是为吞吐量设计的大规模并行机器:一个 SM 上几千个寄存器、上百 KB shared memory、上万线程同时在飞。这个模块从硬件视角把 CUDA 的执行模型、内存层级、同步原语拆明白,让你能自己写 kernel、读懂 CUTLASS / FlashAttention 的内循环、从 Nsight Compute 的 metric 就能判断该去哪里优化。

学完后你应该能回答

执行模型 & warp

  1. kernel launch 从 host 发起到 GPU 开始执行,中间经过哪些层(driver、runtime、queue、command processor、SM)?一次 launch 的固定开销大概是多少?
  2. SM 里的 warp scheduler 每 cycle 发射几条指令?occupancy 100% 就一定最快吗?为什么 Volta 之后 occupancy 的重要性被削弱了?
  3. Warp divergence 是什么?同一 warp 里 16 个线程走 if、16 个走 else,硬件怎么执行?开销大致是多少?
  4. Cooperative Groups / grid.sync 适合什么场景?它和 persistent kernel 的组合能消掉什么 launch 开销?
  5. CUDA Graph 相比 per-launch 的收益主要来自哪?什么情况下它没有明显收益?

内存层级 & 访存

  1. Shared memory 的 bank conflict 是怎么产生的?一个 warp 里 32 个线程访问同一 bank 不同地址,会被串行成几次事务?
  2. Register / Shared / L1 / L2 / HBM 的延迟和带宽大致分别是多少?给一个数据重用模式,你会把它放在哪一级?
  3. SM 上 shared memory 和 L1 合计 ~192 KB,kernel 配置怎么避免 register spill 落到 local memory?
  4. 向量化加载(float4、ldmatrix)能带来多大带宽提升?为什么写 GEMM 几乎必用?
  5. Unified memory(cudaMallocManaged)的 page migration 代价是什么?哪些场景应退回显式 cudaMemcpy?
  6. async copy(cp.async)相比传统 global→shared 走 register 的路径省了什么?Ampere 和 Hopper 的差别?

Tensor Core / MMA

  1. Tensor Core 和普通 CUDA Core 的区别?wmma API 和直接写 mma PTX 指令各自的适用场景是什么?
  2. CUTLASS 3.x 的 CuTe 布局抽象相较 2.x 的 tile iterator 有哪些质的区别?
  3. wgmma(Hopper)相对 mma(Ampere)在执行粒度和异步性上的根本区别?
  4. FlashAttention-3 在 Hopper 上为什么又能快 1.5-2x?用到了 warp specialization 和 wgmma 的哪些特性?

多卡通信

  1. cudaStream 之间的并发是怎么实现的?event / graph / barrier 三种同步方式各自的代价?
  2. NCCL 的 ring all-reduce 为什么在 NVLink 集群上能接近硬件带宽?到 64 卡规模时 tree 算法会不会更优?
  3. NVSwitch、NVLink、PCIe、InfiniBand 四种互联带宽/延迟量级大致是多少?训练集群怎么组拓扑?
  4. SHARP(NVIDIA in-network reduction)相比传统 ring all-reduce 能省多少?部署约束是什么?

新硬件 (Hopper / Blackwell)

  1. Hopper 引入的 thread block cluster、distributed shared memory 提供了以前做不到的什么能力?
  2. TMA 的 swizzling 有哪几种?为什么配合 wgmma 时必须选对?
  3. fp8 tensor core(Hopper FP8 / Blackwell FP4)在训练 / 推理里有什么额外精度约束?
  4. Blackwell 的 2nd-gen Transformer Engine 和 FP4 tensor core 相比 Hopper 升级了什么?
  5. MPS (Multi-Process Service) 解决什么问题?和 MIG 在用法和隔离性上怎么取舍?

调优工具

  1. Nsight Compute 里 SOL(Speed of Light)指标怎么解读?long scoreboard / short scoreboard / barrier 各对应什么根因?
  2. Nsight Systems 的 timeline 上怎么看出 CPU 发射不够快 vs GPU 真正闲着?
  3. nvcc 的 —ptxas-options=-v 输出里哪些字段最能指导你调 occupancy 和寄存器预算?

核心概念

Lab

资料

工具