NVCC编译器避坑指南:搞懂GPU架构!省3h支持维护
好的,请看下面根据您的要求改写的内容:
对于那些日常使用NVIDIA CUDA编译器(NVCC)进行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特性,专为那些希望尝试最新硬件和软件特性的开发者设计。不过,新特性分支驱动在发布后不会再进行更新。
生产分支驱动:大约每年发布两次,专为企业和数据中心生产环境设计和验证。每个主要的生产分支都会定期更新,以修复安全问题和提升性能,并提供为期一年的支持。
长期支持分支(LTS)驱动:大约每18个月发布一次,同样面向企业和数据中心生产环境设计和验证。每个LTS分支都会定期更新,以修复安全问题和提升性能,并提供长达三年的支持。对于那些需要更长支持周期的用户来说,LTS驱动无疑是理想选择。
CUDA工具包
CUDA工具包是软件开发工具包(SDK),开发者可以使用它来对GPU进行编程。它包含各种组件,包括编译器、库、开发者工具和二进制实用程序。每个工具包版本都会列出主要的组件。
它可以单独下载和安装,也可以与驱动程序打包在一起,方便同时安装。可以把它看作是位于NVIDIA驱动之上的一层。
GPU支持的那些事儿
回到文章开头提到的警告信息,CUDA工具包将在下一个主要版本(CUDA 13.0)中移除对计算能力(CC)7.5之前架构的离线编译支持。
这一支持变更属于NVIDIA正常的支持流程。随着时间的推移,NVIDIA会发布更新的架构。当一些较旧的架构的功能完善后,对其的支持就会被逐渐弃用,最终移除。
首先,我们来看看CUDA工具包支持哪些GPU架构。一个快速简单的方法是让NVCC打印出所有支持的架构列表。在CUDA 12.9中,执行nvcc --list-gpu-arch
命令,你就能看到所有支持的架构。
$ 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
架构列表中的数字代表计算能力(Compute Capability)。你可以通过NVIDIA的GPU页面查看GPU与其对应的计算能力。警告信息表明,对CC 7.5之前架构的支持将被移除,这意味着5.x、6.x、7.0和7.2架构,也就是NVIDIA Maxwell、NVIDIA Pascal和NVIDIA Volta架构。
警告信息中另一个重要的部分是关于移除对“离线编译”的支持。这是什么意思呢?
离线编译指的是你编写GPU代码(比如CUDA C++),然后使用CUDA工具包中的NVCC进行编译,生成二进制文件。这可能是大多数人使用编译语言进行开发时的常见方式。警告信息表明,从CUDA 13.0开始,你将无法使用NVCC作为编译器来构建以CC 7.5之前任何GPU架构为目标的应用程序。
这意味着什么?
这并不意味着CC 7.5之前的GPU会突然停止工作或停止被支持。它仅仅意味着你无法使用CUDA 13.0或更高版本的CUDA工具包中的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分支。这将提供三年的支持,直到2028年的某个时候。
- CUDA工具包:继续使用12.9版本。这将为CC 7.5之前的GPU架构提供离线编译支持。
总结一下,即将发布的CUDA 13.0版本将移除对计算能力7.5之前GPU架构的离线编译支持。如果开发者希望继续为这些GPU构建应用程序,应继续使用NVIDIA 580驱动程序分支和CUDA工具包12.9,以保持对这些旧架构的支持。 新媒网跨境认为,开发者需要根据自身情况,及时调整开发策略,以适应NVIDIA的技术发展方向。
新媒网跨境了解到,对于仍在维护旧项目的开发者,上述信息至关重要。同时,对于新项目,应尽量采用较新的GPU架构,以获得更好的性能和更长的技术支持周期。
新媒网(公号: 新媒网跨境发布),是一个专业的跨境电商、游戏、支付、贸易和广告社区平台,为百万跨境人传递最新的海外淘金精准资讯情报。

评论(0)