GPU 架构基础

深入理解 GPU 的设计哲学、SIMT 编程模型以及硬件层级映射,建立并行计算的物理直觉。

核心矛盾:延迟 vs 吞吐

在开始写第一行 CUDA 代码之前,我们需要先调整一下大脑的”计算模式”。

CPU 和 GPU 虽然都是为了计算而生,但它们解决的是完全不同的物理问题。这就好比法拉利公交车的区别:

image.png

异构计算 (Heterogeneous Computing)

GPU 并不是一个能独立运行的计算平台,而必须视为 CPU 的协处理器 (Coprocessor)

当我们谈论”GPU 并行计算”时,实际上是指 CPU + GPU 的异构计算架构

瓶颈预警:PCIe 总线的带宽(通常几十 GB/s)远远低于 GPU 内部显存的带宽(通常几 TB/s)。因此,频繁地在 Host 和 Device 之间搬运数据是性能最大的杀手。编写高效内核的第一原则就是:让数据留在 GPU 上。

晶体管经济学

直观理解: 如果要把 100 块砖从 A 搬到 B:

晶体管经济学与任务分工

从硬件图上看,CPU 的芯片大部分面积是 ControlCache,只有少部分是计算核心。而 GPU 几乎整个芯片都是绿色的计算单元 (ALU)。这种物理结构的差异决定了它们的分工:

特性 CPU GPU
核心数量 较少 (几个到几十个) 众多 (数千个)
擅长任务 控制密集型 (逻辑复杂、分支多) 计算密集型 (数据并行、矩阵运算)
线程特性 重量级 (上下文切换开销大) 轻量级 (极速切换,用于掩盖延迟)