第5章:GPU 硬件概论
理解 GPU 架构设计哲学、存储层次、主流 GPU 规格对比和互联拓扑,为 CUDA 编程建立硬件认知
写 CUDA Kernel 之前必须先搞清楚”工厂怎么布局”——GPU 的硬件架构直接决定了代码的性能上限。本文从 GPU 与 CPU 的设计哲学差异讲起,系统介绍 SM / Tensor Core / 存储层次 / 主流 GPU 参数 / 互联拓扑,最后用 Roofline 模型把硬件参数串成一个分析工具。
📑 目录
- 1. CPU vs GPU:延迟 vs 吞吐
- 2. GPU 内部:SM、Core、Warp
- 3. 存储层次:为什么 Memory Wall 致命
- 4. 主流 GPU 参数对比
- 5. Roofline:从硬件参数到性能预测
- 6. 互联拓扑:NVLink / NVSwitch / IB
- 自我检验清单
- 参考资料
1. CPU vs GPU:延迟 vs 吞吐
CPU 和 GPU 都在做计算,但设计哲学完全相反。
| 维度 | CPU | GPU |
|---|---|---|
| 设计目标 | 单线程低延迟 | 海量并行高吞吐 |
| 核心数量 | 几十(高级缓存大) | 数千(简单 ALU 多) |
| 控制逻辑 | 复杂(分支预测、乱序执行) | 简单(SIMT,一组线程同步执行) |
| 缓存 | 三级 cache,L1 通常 32-64KB | L1 较小,Shared Memory 可编程 |
| 适合任务 | 串行控制、低延迟事务 | 数据并行、矩阵运算 |
🌟 比喻:CPU 是几个博士组成的研究团队,每人能做复杂决策;GPU 是几千个流水线工人,每人只会拧一颗螺丝,但全员同时动作。AI 的核心计算都是矩阵乘法和向量加法——重复且独立的简单工作,正好是 GPU 的舞台。
2. GPU 内部:SM、Core、Warp
2.1 三层硬件结构
GPU(整张卡,例如 H100)
└── SM × 132 (Streaming Multiprocessor,流多处理器)
└── CUDA Core × 128 + Tensor Core × 4 (per SM)
└── Warp(32 个线程,SIMT 最小调度单位)
| 层 | 含义 | 类比 |
|---|---|---|
| GPU | 一整张卡 | 一座工厂 |
| SM | 一组共享调度器和 Shared Memory 的执行单元 | 工厂内的一个车间 |
| CUDA Core | 单精度浮点单元 | 一个工人 |
| Tensor Core | 矩阵乘累加专用单元 | 一台数控机床(批量做矩阵乘) |
| Warp | 32 线程一组,同步执行 | 一个班组,同步做相同动作 |
2.2 Warp:GPU 调度的真正”原子单位”
GPU 不是按线程调度的,而是按 Warp(32 线程) 调度。一个 Warp 内的所有线程在同一个时钟周期执行同一条指令(SIMT,Single Instruction Multiple Thread)。
Warp Divergence:如果 Warp 内的线程因 if/else 走不同路径,GPU 会串行执行两条路径,把不属于该路径的线程 mask 掉:
if (tid % 2 == 0) {
// 一半线程跑这里,另一半空转
do_A();
} else {
do_B(); // 然后另一半跑这里,前一半空转
}
避免 Warp Divergence 是 CUDA 优化的基本功。
2.3 Tensor Core:AI 时代的灵魂芯片
Tensor Core 是为矩阵乘累加(MMA)设计的专用单元,一个时钟周期能做一个 16×16×16 的矩阵乘加(FP16 累加到 FP32)。
| 架构 | Tensor Core 代际 | 支持精度 |
|---|---|---|
| Volta (V100) | 第 1 代 | FP16 |
| Ampere (A100) | 第 3 代 | FP16, BF16, TF32, INT8, sparse |
| Hopper (H100) | 第 4 代 | + FP8, sparse, async TMA |
| Blackwell (B200) | 第 5 代 | + FP4, microscaling |
关键事实:H100 的 FP16 算力 ≈ 989 TFLOPS,其中 超过 90% 来自 Tensor Core。CUDA Core 的 FP32 算力只有 67 TFLOPS——所以写 AI Kernel 不用 Tensor Core 等于浪费 90% 的算力。
3. 存储层次:为什么 Memory Wall 致命
3.1 GPU 存储金字塔
┌──────────────────────┐
快 │ 寄存器 (Register) │ ~256 KB / SM, 1 cycle
↑ ├──────────────────────┤
│ │ Shared Mem / L1 │ ~228 KB / SM, ~30 cycle
│ ├──────────────────────┤
慢 │ L2 Cache │ 50-60 MB,~200 cycle
↓ ├──────────────────────┤
│ HBM (显存) │ 80-141 GB,~400 cycle
├──────────────────────┤
│ Host Memory (CPU) │ TB 级,~10000 cycle (PCIe)
└──────────────────────┘
带宽对比(H100 为例):
| 层 | 容量 | 带宽 |
|---|---|---|
| 寄存器 | 256 KB/SM | ~20 TB/s |
| Shared Memory | 228 KB/SM | ~10 TB/s |
| L2 Cache | 50 MB | ~5 TB/s |
| HBM3 | 80 GB | 3.35 TB/s |
| PCIe 5.0 | — | 64 GB/s(主机↔设备) |
3.2 Memory Wall
Memory Wall:算力增长速度远超带宽增长速度,导致大多数 AI Kernel 不是被算力卡住,而是被显存带宽卡住。
举例:LLM Decode 阶段(batch 小、矩阵退化为向量),每次只用一点点算力,但要把整个权重和 KV Cache 从 HBM 搬到 SM——典型的 memory bound,带宽决定速度。
3.3 写 Kernel 的核心准则
最大化数据在快速存储中的复用,最小化对慢速存储的访问。
GEMM Tiling、FlashAttention 的核心都是这个准则:把数据分块加载到 Shared Memory / 寄存器,在快速存储中反复使用,只往 HBM 写最终结果。
4. 主流 GPU 参数对比
| 维度 | A100 80GB | H100 SXM | H200 SXM | B200 |
|---|---|---|---|---|
| 架构 | Ampere | Hopper | Hopper | Blackwell |
| SM 数量 | 108 | 132 | 132 | 148 |
| FP16 (Tensor Core) | 312 TF | 989 TF | 989 TF | 2250 TF |
| FP8 (Tensor Core) | — | 1979 TF | 1979 TF | 4500 TF |
| 显存类型 | HBM2e | HBM3 | HBM3e | HBM3e |
| 显存容量 | 80 GB | 80 GB | 141 GB | 192 GB |
| 显存带宽 | 2 TB/s | 3.35 TB/s | 4.8 TB/s | 8 TB/s |
| L2 Cache | 40 MB | 50 MB | 50 MB | ~80 MB |
| NVLink 带宽 | 600 GB/s | 900 GB/s | 900 GB/s | 1800 GB/s |
| 功耗 (TDP) | 400 W | 700 W | 700 W | 1000 W |
几个直觉:
- FP8 算力是 FP16 的 2 倍:推理走 FP8 是 H100 的杀手锏
- H200 = H100 + 显存大升级:同算力但显存带宽 +43%,容量 +75%,大模型推理收益巨大
- B200 显存带宽 8 TB/s:几乎是 A100 的 4 倍,长上下文推理大幅提升
5. Roofline:从硬件参数到性能预测
Roofline 模型把硬件的算力上限和带宽上限画在同一张图上,用 Arithmetic Intensity(算术强度) 把 Kernel 定位在图中:
意思是:每搬一字节数据,做了多少次浮点运算。
5.1 Roofline 公式
实际性能 =
性能 (TFLOPS)
│ Peak FLOPs (算力屋顶)
│ ┌────────────────────────
│ /
│ / ← 斜率 = Peak Bandwidth
│/
└─────────────────────── Arithmetic Intensity (FLOPs/Byte)
↑
Ridge Point(算力 / 带宽)
- AI < Ridge Point:Memory Bound,被带宽卡住,优化方向是减少访存
- AI > Ridge Point:Compute Bound,被算力卡住,优化方向是用 Tensor Core / 提高吞吐
5.2 H100 的 Ridge Point
意思是:只有当一个 Kernel 每搬 1 字节数据能做 295 次浮点运算,才能跑满 H100 的算力。
| Kernel | AI 估算 | 类型 |
|---|---|---|
| GEMM (大矩阵乘) | 100~500 | Compute Bound(Tensor Core 跑满) |
| Softmax | 1~5 | Memory Bound |
| LayerNorm | 1~3 | Memory Bound |
| Attention Decode | < 1 | 严重 Memory Bound |
| FlashAttention(算法优化后) | 10~30 | 接近 Compute Bound |
🌟 Roofline 的工程意义:看到一个 Kernel 慢,先算它的 AI,判断在屋顶下方还是斜坡上——决定是优化算法(降访存)还是优化计算(用 Tensor Core)。
6. 互联拓扑:NVLink / NVSwitch / IB
6.1 单机内部互联
| 互联方式 | 双向带宽(每对 GPU) | 用途 |
|---|---|---|
| PCIe 4.0 x16 | 64 GB/s | 主机↔GPU,慢速备选 |
| PCIe 5.0 x16 | 128 GB/s | 同上,新一代 |
| NVLink 4 (H100) | 900 GB/s | GPU↔GPU,14× PCIe |
| NVLink 5 (B200) | 1800 GB/s | GPU↔GPU,28× PCIe |
| NVSwitch | 全互联 | 8 卡之间任意一对都满速 |
6.2 多机互联
| 网络 | 带宽 | 延迟 | 用途 |
|---|---|---|---|
| Ethernet (10 GbE) | 1.25 GB/s | μs | 慢速备份 |
| InfiniBand HDR | 25 GB/s | <1 μs | 主流多机 |
| InfiniBand NDR | 50 GB/s | <1 μs | 最新多机 |
| RoCE v2 | 25-50 GB/s | μs | 以太网上跑 RDMA |
🌟 关键经验法则:
- NVLink 比 IB 快 18-36 倍 —— 张量并行(高频 AllReduce)必须限制在单机 NVLink 内
- IB 比 PCIe-only 快 几十倍 —— 跨机训练必须有 IB,纯以太网不可行
- Pipeline 并行可以跨机 —— 因为通信量小且不是每步都通
6.3 看拓扑:nvidia-smi topo -m
GPU0 GPU1 GPU2 GPU3
GPU0 X NV4 NV4 NV4
GPU1 NV4 X NV4 NV4
GPU2 NV4 NV4 X NV4
GPU3 NV4 NV4 NV4 X
| 标记 | 含义 |
|---|---|
NV# | NVLink,数字代表链路条数 |
PIX | PCIe Switch 同一桥下 |
PXB | 跨多个 PCIe Switch |
NODE | 同 NUMA node |
SYS | 跨 NUMA node(最慢) |
排查”训练为什么慢”:如果应该走 NVLink 的两张卡显示成 SYS,说明 NCCL 走错通道,要检查 CUDA_VISIBLE_DEVICES 和 NCCL_TOPO_FILE。
✅ 自我检验清单
- CPU vs GPU:能向小白解释”为什么矩阵乘法 GPU 比 CPU 快几十倍”
- SM 与 Warp:能说清 Block / Warp / Thread 的层次,以及为什么 Block Size 应该是 32 的倍数
- Tensor Core:能说出为什么不用 Tensor Core 等于浪费 90% 算力
- 存储层次:能背诵寄存器 / Shared Mem / L2 / HBM 的容量与带宽量级
- Memory Wall:能解释为什么 LLM Decode 是 memory bound,以及怎么诊断
- H100 vs A100:能对比关键参数差异,以及哪些场景升级 H100 收益最大
- Roofline 应用:给定 Kernel 的 AI,能判断它在屋顶下还是屋顶上,并指出优化方向
- 拓扑判读:能看懂
nvidia-smi topo -m输出,判断哪些卡走 NVLink、哪些走 PCIe - 并行策略选型:能解释为什么张量并行不能跨机、流水线并行可以跨机
📚 参考资料
官方资料
- NVIDIA Ampere Architecture Whitepaper:https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/nvidia-ampere-architecture-whitepaper.pdf
- NVIDIA Hopper Architecture Whitepaper:https://resources.nvidia.com/en-us-tensor-core
- NVIDIA Blackwell Architecture:https://www.nvidia.com/en-us/data-center/blackwell-architecture/
- NVIDIA Deep Learning Performance Guide:https://docs.nvidia.com/deeplearning/performance/
经典论文
- Roofline: An Insightful Visual Performance Model (Williams et al., 2009)
- Hopper Architecture Deep-Dive (NVIDIA GTC talk)
中文解读
- 小小将:GPU 体系结构详解 —— 知乎专栏
- 猛猿:NVIDIA H100 架构深度解析
- 方佳瑞:从硬件视角理解 LLM 推理
系统级综述
- AI Systems Performance Engineering(Chris Fregly, O’Reilly 2025):learning.oreilly.com —— Ch2 系统介绍 GB200 NVL72 / Grace-Blackwell 超级芯片 / NVLink-C2C 统一内存,是本章硬件全景的进阶延伸