如果您最近使用 NVIDIA CUDA 编译器 (NVCC) 开发 NVIDIA GPU 应用,您可能会遇到以下警告消息:
nvcc warning : Support for offline compilation for architectures prior to '<compute/sm/lto>_75' will be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
这究竟意味着什么,您应该采取哪些行动?在这篇文章中,我们将解释 NVIDIA CUDA 工具包和 NVIDIA 驱动如何协同工作以支持 GPU。
NVIDIA 软件堆栈
用于编程 GPU 的软件堆栈分为两个独立但同样重要的部分:用于构建应用程序的 CUDA 工具包和用于运行应用程序的 NVIDIA 驱动。
NVIDIA 驱动程序
驱动程序是直接与 GPU 硬件接口的软件,也是应用软件和硬件之间的接口。可以将驱动程序视为直接位于 GPU 硬件之上的软件。原则上,驱动程序与系统中与外围设备(包括鼠标、键盘、扬声器、麦克风和网卡等)连接的任何其他设备驱动程序相同。
NVIDIA 驱动程序通常独立于 CUDA 工具套件安装,但 NVIDIA 也提供捆绑安装程序和软件包,以便在某些平台上使用。在从驱动下载页面安装时,您可以查看每个驱动支持哪些 GPU。
NVIDIA 驱动程序分为三个不同的分支,每个分支都有不同的生命周期:
- 新功能分支 (NFB) 驱动发布频率最高,并包含面向开发者的最新 CUDA 功能。这些系统专为希望尝试最新硬件和软件功能的开发者而设计。新功能分支驱动在发布后不会更新。
- 生产分支驱动每年发布两次,专为企业和数据中心生产使用而设计和认证。每个主要生产分支都会定期更新以修复安全问题和改进性能,并提供 1 年的支持。
- 长期支持分支 (LTS) 驱动大约每 18 个月发布一次。它们还经过设计和认证,可用于企业和数据中心生产。每个 LTS 分支都会定期更新以修复安全问题和改进性能,并提供 3 年的支持。对于需要更长时间支持的用户来说,这是理想的解决方案。
CUDA 工具套件
CUDA 工具套件是开发者用于编程 GPU 的软件开发套件 (SDK) 。它包含各种组件,包括编译器、库、开发者工具和二进制实用程序。工具包的每个版本都会列出主要组件。它可以单独下载和安装,也可以与驱动程序打包,以便于同时安装两者。可以将该工具包视为 NVIDIA 驱动程序的扩展。
GPU 支持
现在,回到本文开头提到的警告消息:
在下一个主要版本的 CUDA 工具套件 CUDA 13.0 中,将删除对计算能力 (CC) 7.5 之前的架构的离线编译支持。
此支持变更是 NVIDIA 正常支持流程的一部分。随着时间的流逝,NVIDIA 发布了更新的架构。在某些时候,一些较旧的架构功能齐全,对它们的支撑被弃用并最终被删除。
首先,让我们来看看 CUDA 工具包支持的 GPU 架构。查看特定版本的 CUDA Toolkit 支持哪些架构的快速简便方法是让 NVCC 打印出所有受支持架构的列表。在 CUDA 12.9 上,如果执行 nvcc --list-gpu-arch command, you
,您将看到所有受支持的架构。
$ nvcc --list-gpu-arch
compute_50
compute_52
compute_53
compute_60
compute_61
compute_62
compute_70
compute_72
compute_75
compute_80
compute_86
compute_87
compute_89
compute_90
compute_100
compute_101
compute_103
compute_120
compute_121
架构列表中的数字表示计算能力。您可以通过查看我们当前和旧版 GPU 页面,查看 GPU 与其 CC 之间的对应关系。上述警告消息表示,将不再支持 CC 7.5 之前的架构。这意味着 5.x、6.x、7.0 和 7.2 架构,即 NVIDIA Maxwell、NVIDIA Pascal 和 NVIDIA Volta 架构。
警告声明中的另一重要内容是取消对“离线编译”的支持。 这意味着什么?
离线编译是指编写 GPU 代码(例如 CUDA C++),然后使用 NVCC(来自 CUDA 工具套件)编译该代码以构建二进制文件。大多数人可能都会想到使用编译语言进行开发时进行离线编译。警告消息表示,从 CUDA 13.0 开始,您将无法使用 NVCC 作为编译器来构建针对 CC 7.5 之前的任何 GPU 架构的应用程序。
这一切意味着什么?
这并不意味着 CC 7.5 之前的 GPU 会突然停止工作或停止支持。这意味着您无法使用 CUDA 工具套件 13.0 或更高版本的 NVCC 来构建针对旧版 GPU 的新应用。使用旧版 CUDA 工具包构建的应用程序将继续在驱动程序支持的所有硬件上运行。
NVIDIA 580 分支驱动将与 CUDA 13.0 工具包一起发布。这是 CC 7.5 之前的 GPU 支持的最后一个分支。重要的是,这是一款 LTS 驱动,将在发布后提供三年支持,并一直支持到 2028 年年中。在 CC 7.5 之前为 GPU 构建的应用程序将在 580 驱动程序的整个生命周期内(大约在 2028 年)获得全面支持。
开发者指南
由于取消了对离线编译的支持,这对应用开发者而言意味着什么?
如果您要编写支持 CC 7.5 之前的 GPU 的应用程序,则需要安装并使用以下版本:
- NVIDIA 驱动:保持在 580 分支。这将提供 3 年的支持,直至 2028 年。
- CUDA Toolkit:保持在 12.9。这为 CC 7.5 之前的 GPU 架构提供了离线编译支持。
总之,即将发布的 CUDA 13.0 将取消对计算能力 7.5 之前的 GPU 架构的离线编译支持。希望继续为这些 GPU 构建应用程序的开发者应继续使用 NVIDIA 驱动分支 580 和 CUDA Toolkit 12.9,以保持对这些旧架构的支持。