深入理解 GPU 的设计哲学、SIMT 编程模型以及硬件层级映射,建立并行计算的物理直觉。
在开始写第一行 CUDA 代码之前,我们需要先调整一下大脑的”计算模式”。
CPU 和 GPU 虽然都是为了计算而生,但它们解决的是完全不同的物理问题。这就好比法拉利与公交车的区别:

GPU 并不是一个能独立运行的计算平台,而必须视为 CPU 的协处理器 (Coprocessor)。
当我们谈论”GPU 并行计算”时,实际上是指 CPU + GPU 的异构计算架构:
瓶颈预警:PCIe 总线的带宽(通常几十 GB/s)远远低于 GPU 内部显存的带宽(通常几 TB/s)。因此,频繁地在 Host 和 Device 之间搬运数据是性能最大的杀手。编写高效内核的第一原则就是:让数据留在 GPU 上。
直观理解: 如果要把 100 块砖从 A 搬到 B:
- CPU 像是一辆法拉利,速度极快,一次搬 2 块,来回跑 50 趟。
- GPU 像是一群蚂蚁(或者一辆慢速大卡车),速度不快,但一次能搬 100 块,跑 1 趟就搞定。
从硬件图上看,CPU 的芯片大部分面积是 Control 和 Cache,只有少部分是计算核心。而 GPU 几乎整个芯片都是绿色的计算单元 (ALU)。这种物理结构的差异决定了它们的分工:
| 特性 | CPU | GPU |
|---|---|---|
| 核心数量 | 较少 (几个到几十个) | 众多 (数千个) |
| 擅长任务 | 控制密集型 (逻辑复杂、分支多) | 计算密集型 (数据并行、矩阵运算) |
| 线程特性 | 重量级 (上下文切换开销大) | 轻量级 (极速切换,用于掩盖延迟) |