4.1. CUDA 软件平台是什么?

CUDA 全称是 Compute Unified Device Architecture(统一计算设备架构)。
根据上下文, CUDA 可以指代多个不同的事物: 一种 总体设备架构,或是适用于该设计架构的 CUDA 编程模型,或是扩展高级语言(如 C 语言)以添加该编程模型的 CUDA 软件平台

CUDA 的设计愿景在 Lindholm 等人于 2008 年 发布的白皮书中进行了阐述。我们强烈推荐这篇论文,它是 NVIDIA 文档中许多观点、图表乃至特定表述的原始出处。

本文重点关介绍 CUDA 软件平台

CUDA 软件平台是用于开发 CUDA 程序的一系列软件集合。 虽然也存在针对其他语言(如 FORTRAN)的 CUDA 软件平台,但我们将重点介绍主流的 CUDA C++ 版本。

该平台大致可分为用于 构建 应用程序的组件 (如 NVIDIA CUDA 编译器驱动 工具链),以及在应用程序中 使用调用 的组件(如 CUDA Driver APICUDA Runtime API),如下图所示。

CUDA 工具包。改编自《Professional CUDA C Programming Guide》。

在这些 API 之上构建的是用于为通用和特定领域优化 内核 (kernel) 的库,例如用于线性代数的 cuBLAS 和用于深度神经网络的 cuDNN