GPU 基础概述:从图形渲染到 AI 与高性能计算的核心
Graphics Processing Units(GPU)已从专用的图形渲染硬件演进为 AI、科学计算与高性能任务的中坚力量。本文将介绍 GPU 架构的基础知识,包括其组成部分、内存层次结构,以及 Streaming Multiprocessors(SM)、核(cores)、warp 与程序(programs)的角色。
CPU vs. GPU:根本区别
CPU(中央处理单元)与 GPU(图形处理单元)都用于处理数据,但其处理方式存在根本差异:
资料来源:tutorialspoint.com
- CPU:拥有少量强大核心,擅长顺序或有限并行任务处理。
- GPU:包含成千上万的较小核心,设计用于大规模并行计算,适用于图像渲染、训练 AI 模型和仿真等任务。
简言之,CPU 优化通用计算任务,而 GPU 擅长同时处理大量独立的小规模计算。
GPU 的内存层次结构
GPU 拥有复杂的内存层次结构以最大化计算效率。主要的内存类型包括:
SRAM(Static RAM)——最快的缓存层
位于 GPU 内核内部,包含寄存器、L1 Cache 与 L2 Cache:
- 寄存器(Registers):每个 GPU core 内的超快小内存,用于存放核心正在处理的即时值,速度最快。
- L1 Cache:位于每个 Streaming Multiprocessor(SM)内部的一级缓存,存储常用数据以减少对慢速内存(如 DRAM)的访问。
- L2 Cache:跨多个 SM 共享的二级缓存,用于存放不适合放入 L1 的数据,减少对外部显存(VRAM)的依赖。
重要性:寄存器、L1、L2 减少了从较慢全局内存读取数据的次数,从而加速计算,尤其对 AI 和游戏负载的性能至关重要。它们快速但容量小,因此合理利用缓存能显著提升性能。
DRAM(Dynamic RAM)——主内存(GPU 上的 VRAM)
- 位于显卡上,作为 VRAM(Video RAM)使用。
- 存放大量数据,如模型权重与贴图。
- 比 SRAM 慢但容量更大,常见类型为 GDDR(Graphics DDR)。
HBM(High Bandwidth Memory)——高性能显存
- 用于高性能 GPU(AI 与深度学习场景)。
- 采用堆叠式(vertical stacking)设计,降低延迟并提升带宽。
- 比 GDDR 更快,但成本更高,常见于专业 GPU。
GPU 中的数据传输成本
从 DRAM(VRAM)向 SRAM(寄存器 / L1)移动数据代价很高,因此 kernel 优化通常聚焦于最小化这种传输。高效的内存使用能显著提升 AI 与渲染任务的性能。
Streaming Multiprocessors(SMs)及其作用
SM 是 GPU 的基本处理单元:
- 每个 SM 包含多个 GPU core、少量快速内存(SRAM)与执行单元。
- 每个 SM 可以独立运行,处理多个并行程序实例。
- GPU 中 SM 的数量直接影响其计算能力:SM 越多,理论上并行处理能力越强。
当一个程序运行在 GPU 上时,它会被拆分到多个 SM 上,每个 SM 负责处理数据的一部分。更多的 SM 通常意味着更好的并行性能。
程序、PID 与并行执行
在 GPU 中,一个**程序(program)**是内核代码的一个并行实例。每个程序:
- 被分配一个程序 ID(PID);
- 处理特定的数据块;
- 使用所在 SM 的 SRAM 来高效执行计算。
每个 SM 能同时承载的 PID 数量取决于每个程序所需的 SRAM 大小:如果每个程序占用内存过多,SM 无法并行运行太多程序,效率就会下降。
核心(Cores)、Warp 与并行性
GPU 核心:最小计算单元
- 核心是 GPU 的最小计算单元,优化用于浮点运算(FLOPs)。
- 每个核心大多能在每个周期执行一次浮点操作。
Warp:核心的执行组
- GPU 的核心按 warp 分组。NVIDIA 的 warp 大小为 32,AMD 通常为 64。
- 一个 warp 内的所有核心必须同时执行同一条指令,但在不同数据上运行(SIMD 风格)。
- warp 作为一个执行单元按 lock-step(锁步)方式运行。如果工作负载的尺寸不是 warp 大小的整数倍(例如张量形状不是 32 的倍数),部分核心会空闲,导致性能下降,这种现象称为 warp divergence。
建议:在张量与数据布局上尽量使用 32 的倍数(或 AMD 上的 64 倍数),以充分利用 warp 中所有核心,减少空闲与效率损失。
优化 GPU 性能的要点
- 减少内存传输 — 尽量降低 VRAM(DRAM)与 SRAM 之间的数据搬移次数。
- 最大化并行度 — 通过降低每个程序的内存占用,尽量让更多 PID 在同一 SM 中并行运行。
- 为 warp 优化工作 — 在 AI 工作负载中使用 32(或 64)为单位的维度,确保 warp 内所有核心都有可做的工作。
结论
GPU 天生适合大规模并行计算,这使得它们在 AI、深度学习、游戏渲染与模拟等领域表现卓越。理解 SM、内存层次、核心、warp 与程序执行机制,有助于你为工作负载做出更合理的优化设计。无论是在训练模型还是渲染复杂场景,高效利用 GPU 都是提升速度与可扩展性的关键。