GPU 架构
在编写或调优 GPU 内核之前,你需要对 GPU 如何运行代码有一个可用的模型。没有它,像"提高占用率"或"减少共享内存存储体冲突"这样的建议,就只是一堆需要记忆的规则。你不会完全理解它们何时适用、何时不适用。
本节以内核工作所需的粒度解释现代 GPU 架构。由于 CUDA 主导着当今大部分 LLM 推理生态,细节上会偏向 NVIDIA 硬件。不过,核心概念同样广泛适用于 AMD GPU 和其他并行加速器。
硬件与执行模型
硬件是 GPU 上物理存在的部分:流式多处理器(SM)、Tensor Core,以及构成 GPU 内存层级的寄存器、缓存、共享内存和高带宽内存(HBM)。这些资源决定了 GPU 能把多少工作和数据保持在计算单元附近。
执行模型是用于编写内核的抽象。代码创建线程,并把它们组织成 warp、线程块和网格。GPU 在可用硬件上调度这些工作。
内核优化连接了这两种视角。一个快速的内核会把执行模型映射到硬件上,并尊重计算、内存带宽、寄存器、共享内存和调度容量方面的限制。
GPU 执行与内存图
下面的可视化工具跟踪从单个线程到 SM 的工作流程,然后展示为计算单元供数的内存层。四个术语构成了执行层级:
- 线程是最小的逻辑工作单元,通常处理一个元素或一小群元素。
- warp是由 32 个线程组成的组,NVIDIA SM 会一起调度它们。
- 线程块将可以通过共享内存和同步协作的线程分组。
- 流式多处理器(SM)是接受线程块并从就绪的 warp 发出指令的片上计算单元。
下一步
下面四个页面将执行模型与物理硬件分开讲述,然后展示这两种视角在内核执行过程中如何交汇。
- GPU 线程、warp、线程块与网格 — 内核如何将工作组织为线程、warp、线程块和网格
- 流式多处理器 — SM 内部结构、warp 调度、线程块驻留与占用率
- GPU 内存层级 — 寄存器、共享内存、缓存、HBM 与存储体冲突
- Tensor Core — 矩阵乘累加指令、精度与布局要求