Ch16 SIMD 与 GPU 编程 · 考研/期末复习大纲¶
承接 Ch15 口诀: "Ch15 给工程素养 — Linux/Git/代码/测试/DevOps. Ch16 给性能内功 — SIMD/CUDA/Triton/RISC-V。" 跨章承接: Ch13 §02 架构 → Ch16 §01 硬件; Ch13 §04 CUDA → Ch16 §04; Ch17 LLM 推理 → Ch16 §05 Triton
一 · 考点分级速览 (🔴 14 / 🟡 18 / 🟢 8 / ⭐ 4, 共 44 考点)¶
| 考频 | 考点 | 章节 |
|---|---|---|
| 🔴 | SIMD 原理 | §00 |
| 🔴 | AVX 寄存器宽度 | §03 |
| 🔴 | NEON 寄存器 | §02 |
| 🔴 | CUDA warp/block/grid | §04 |
| 🔴 | 内存层级 | §01 |
| 🔴 | Roofline 模型 | §01 |
| 🔴 | Tensor core | §04 |
| 🔴 | coalesced 内存访问 | §04 |
| 🔴 | occupancy | §04 |
| 🔴 | bank conflict | §04 |
| 🔴 | Flash Attention | §04 |
| 🔴 | Triton JIT | §05 |
| 🔴 | TPU systolic | §05 |
| 🔴 | RISC-V V 扩展 | §06 |
| 🟡 | 数据对齐 | §03 |
| 🟡 | 内存预取 | §01 |
| 🟡 | AVX-512 mask | §03 |
| 🟡 | ARM SVE | §02 |
| 🟡 | CUDA shared memory | §04 |
| 🟡 | CUDA constant memory | §04 |
| 🟡 | kernel launch overhead | §04 |
| 🟡 | Triton autotune | §05 |
| 🟡 | PTX 汇编 | §04 |
| 🟡 | Triton block size | §05 |
| 🟡 | TPU 脉动阵列 | §05 |
| 🟡 | Vulkan workgroup | §07 |
| 🟡 | Vulkan shader | §07 |
| 🟡 | SPIR-V | §07 |
| 🟡 | RISC-V 指令集 | §06 |
| 🟡 | 嵌入式 ML | §06 |
| 🟡 | 量化 INT4 / INT8 | §04 |
| 🟢 | FMA 指令 | §03 |
| 🟢 | 循环展开 | §03 |
| 🟢 | CUDA stream | §04 |
| 🟢 | CUDA event | §04 |
| 🟢 | TPU pod | §05 |
| 🟢 | Metal (Apple) | §07 |
| 🟢 | RISC-V 物理实现 | §06 |
| 🟢 | GPU 调度器 | §01 |
| ⭐ | MFU (Model FLOPS Utilization) | §04 |
| ⭐ | CUTLASS | §04 |
| ⭐ | Helion | §05 |
| ⭐ | 异构调度 (CUDA + ROCm) | §04 |
二 · 概念关系图¶
graph LR
A[C++ / ML 框架] --> B[硬件]
B --> C[ARM NEON]
B --> D[x86 AVX]
C --> E[GPU CUDA]
D --> E
E --> F[Triton/TPU]
F --> G[RISC-V]
G --> H[Vulkan]
三 · 必考点精讲¶
🔴F1: SIMD 原理¶
一条指令多数据: e.g., AVX-512 同时算 16 个 FP32。
🔴F2: AVX-512¶
- 512 bit 宽
- 32 个 512-bit 寄存器 (ZMM0-31)
- mask 操作
🔴F3: CUDA 内存层级¶
- Register: per-thread, 极快
- Shared: per-block, 快
- L1 / L2: 全 GPU
- Global (HBM): 大, 慢
🔴F4: Roofline 模型¶
$\(\text{perf} = \min(\pi_{\text{peak}}, I \times B_{\text{mem}})\)$ - 计算受限: \(\pi_{\text{peak}}\) - 内存受限: \(I \times B_{\text{mem}}\)
🔴F5: Tensor core¶
矩阵乘专用, FP16 / BF16 / INT8。
🔴F6: occupancy¶
每个 SM 活跃 warp 数 / 最大 warp 数。影响延迟隐藏。
🔴F7: Flash Attention¶
分块 attention, 不存中间结果, 减少 IO。
🔴F8: Triton 优势¶
- Python-like, 易写
- 自动向量化
- 自动调优
四 · 公式卡片¶
SIMD¶
\[\text{Speedup} = \frac{\text{width}}{\text{sizeof}(T)}\]
Roofline¶
\[P = \min(\pi, I \times B)\]
Tensor core¶
\[\text{FLOPs} = 2 \cdot N \cdot M \cdot K \text{ (matmul)}\]
CUDA¶
\[T_{\text{kernel}} = T_{\text{launch}} + T_{\text{compute}} + T_{\text{memcpy}}\]
TPU¶
\[\text{Systolic 吞吐} = f \cdot N \cdot N / T_{\text{cycle}}\]
量化¶
\[\text{Memory} = \frac{N_{\text{params}} \times \text{bytes}}{4 \text{ (INT4)}}\]
五 · 跨章综合题¶
| # | 题型 | 涉及的章 | 难度 |
|---|---|---|---|
| 综合1 | Ch16 CUDA + Ch17 LLM 推理加速 | Ch16+Ch17 | ★★★ |
| 综合2 | Ch16 Triton + Ch07 Transformer attention 优化 | Ch07+Ch16 | ★★★ |
| 综合3 | Ch16 Vulkan + Ch15 K8s 跨平台部署 | Ch15+Ch16 | ★★ |
| 综合4 | Ch13 内存墙 + Ch16 Roofline 模型 | Ch13+Ch16 | ★★★ |
| 综合5 | Ch16 RISC-V + Ch17 边缘推理 | Ch16+Ch17 | ★★ |
| 综合6 | Ch05 概率 + Ch16 量化精度损失 | Ch05+Ch16 | ★★★ |
| 综合7 | Ch02 矩阵论 + Ch16 Tensor core matmul | Ch02+Ch16 | ★★★ |
| 综合8 | Ch06 RL + Ch16 GPU 分布式训练 | Ch06+Ch16 | ★★★ |
| 综合9 | Ch08 CNN + Ch16 cuDNN 内核 | Ch08+Ch16 | ★★ |
| 综合10 | Ch12 GNN + Ch16 Flash Attention 邻居聚合 | Ch12+Ch16 | ★★★ |
六 · 自测题 (20 题)¶
Part A 单选 (10 题)¶
- AVX-512 宽度?
- NEON 宽度?
- CUDA warp 大小?
- Tensor core 算什么?
- Roofline 模型两个区域?
- occupancy 含义?
- Triton 优势?
- TPU 脉动阵列?
- RISC-V V 扩展?
- Vulkan Compute 用途?
Part B 简答 (5 题)¶
- SIMD 加速原理
- CUDA 内存层级
- Flash Attention 优化点
- Roofline 模型应用
- 量化 INT4 优势与风险
Part C 论述 (5 题)¶
- CPU SIMD vs GPU SIMT 取舍
- Triton 与 CUDA 编程模型差异
- 量化对模型精度的影响
- TPU 与 GPU 架构差异
- RISC-V 在 AI 边缘的角色
七 · 易错点¶
- AVX vs AVX-512: 宽度不同 (256 vs 512)。
- CUDA warp 与 block: warp=32, block 可含多 warp。
- shared memory 与 L1: 共享内存 = 显式管理。
- coalesced: 32 个 thread 访问连续 128 字节。
- bank conflict: shared mem 32 个 bank, 同 bank 冲突。
- Triton 自动向量化: 不是所有 kernel 都自动优化。
- TPU pod: 不是单机, 是 1024+ 芯片互联。
- RISC-V 商业: SiFive / 平头哥, 还在追赶 ARM。
八 · 速记口播版 (60s)¶
Ch16 共 8 节: §00 C++/ML 框架 (PyTorch C++) → §01 硬件 (内存墙 + Roofline) → §02 ARM NEON (移动 SIMD) → §03 x86 AVX (服务器 SIMD) → §04 GPU CUDA (NVIDIA 主导, Tensor core) → §05 Triton/TPU (Python 风格 + 加速器) → §06 RISC-V (嵌入式) → §07 Vulkan (跨平台 GPU)。是 AI 性能工程师的内功。