1.1 Introduction
本节主要介绍 GPU 的发展背景、使用 GPU 的优势,以及开发者使用 GPU 的不同方式,核心目的是理解 为什么 GPU 适合并行计算,以及 CUDA 为什么会出现。
这一节主要完成了 CUDA 学习的背景铺垫:GPU 从最初用于 3D Graphics 的固定功能处理器,逐渐发展成可编程的大规模并行处理器;CUDA 的出现进一步将 GPU 的高吞吐能力开放给通用计算。 GPU 与 CPU 的核心区别在于设计目标不同——CPU 更强调串行程序和单线程执行速度,而 GPU 通过同时执行大量线程追求更高的总体吞吐量,并将更多硬件资源投入数据处理。实际使用 GPU 时,也不一定需要直接编写 CUDA Kernel,可以从 CUDA Libraries、AI Frameworks 或 Triton 等 DSL 等不同抽象层次利用 GPU 的计算能力。
1.1.1. The Graphics Processing Unit
GPU 最初是为 3D 图形处理设计的专用处理器,早期主要通过固定功能硬件加速实时 3D 渲染中的并行操作。随着 GPU 架构不断发展,其可编程能力逐渐增强。到 2003 年,图形流水线中的部分阶段已经可以完全编程,使开发者能够针对 3D 场景或图像中的大量元素并行执行自定义代码。
2006 年,NVIDIA 推出了 CUDA(Compute Unified Device Architecture),使计算任务可以脱离传统 Graphics API,直接利用 GPU 的高吞吐计算能力。从此 GPU 不再局限于图形处理,而开始成为通用并行计算设备。
此后,CUDA 和 GPU Computing 被广泛用于各种计算密集型任务,包括流体动力学、能量传输等科学模拟,以及数据库、数据分析等商业应用。同时,GPU 强大的计算能力和可编程性也成为许多新算法和技术发展的重要基础,从图像分类一直延伸到 Diffusion Model、Large Language Model 等生成式 AI。
1.1.2 The Benefits of Using GPUs
在相近的成本和功耗范围内,GPU 通常能够提供比 CPU 更高的 Instruction Throughput(指令吞吐量) 和 Memory Bandwidth(内存带宽),因此许多具有高度并行性的应用可以在 GPU 上获得显著加速。FPGA 等其他计算设备同样具有很高的能源效率,但相比 GPU,其编程灵活性通常更低。
CPU 和 GPU 的设计目标并不相同。CPU 主要追求让一个串行操作序列,也就是一个 Thread,尽可能快地执行,并能够同时运行几十个左右的线程;GPU 则主要追求同时执行成千上万个线程,通过牺牲一定的单线程性能来换取更高的整体 Throughput。因此可以简单理解为:
CPU → 强调单线程执行速度 / Latency
GPU → 强调大规模并行执行 / Throughput
这种目标差异也反映在芯片资源的分配上,如下图所示。GPU 面向高度并行计算,因此会把更多晶体管投入到 Data Processing Units;CPU 则把更多晶体管投入到 Data Cache 和 Flow Control,用于提升复杂串行程序和单线程执行效率。

1.1.3 Getting Started Quickly
利用 GPU 计算能力并不意味着一定要直接编写 GPU Kernel。CUDA Programming Guide 主要介绍如何使用 C++ 等高级语言对 CUDA GPU 平台进行编程,但实际应用中还存在很多更高层的使用方式。
首先,可以直接使用已经实现好的 GPU 加速库。许多常见算法已经包含在专门的 CUDA Libraries 中,例如 cuBLAS、cuFFT、cuDNN 和 CUTLASS。对于已经具有成熟实现的算法,尤其是 NVIDIA 提供的库,通常直接使用现有实现比自己从头重新实现更加高效。这些库还会针对不同 GPU 架构进行优化,因此能够在 Productivity、Performance 和 Portability 之间取得较好的平衡。
在更高层,还有 PyTorch 等 AI Framework 提供 GPU 加速的基础计算模块。这些 Framework 很多时候并不是自己重新实现所有底层计算,而是利用前面提到的 GPU 加速库来获得性能提升。
除此之外,还可以通过 DSL(Domain-Specific Language) 进行 GPU 编程,例如 NVIDIA Warp 和 OpenAI Triton。这些 DSL 会编译并直接运行在 CUDA 平台之上,相比 CUDA Guide 中介绍的 C++ 等高级语言,它们提供了进一步提高抽象层次的 GPU 编程方式。NVIDIA 还提供 Accelerated Computing Hub,其中包含 GPU 和 CUDA Computing 的学习资源、示例和教程。