NVIDIA CUDA Linux 安装指南
CUDA 工具包在 Linux 上的安装说明。
1. 简介
CUDA® 是 NVIDIA® 发明的并行计算平台和编程模型。它通过利用图形处理单元 (GPU) 的强大功能,显著提高计算性能。
CUDA 的开发考虑了以下几个设计目标
为标准编程语言(如 C 语言)提供一小组扩展,以便直接实现并行算法。借助 CUDA C/C++,程序员可以将精力集中在算法的并行化任务上,而不是花费时间来实现它们。
支持异构计算,应用程序同时使用 CPU 和 GPU。应用程序的串行部分在 CPU 上运行,并行部分卸载到 GPU。因此,CUDA 可以逐步应用于现有应用程序。CPU 和 GPU 被视为具有各自内存空间的独立设备。这种配置还允许 CPU 和 GPU 上的同时计算,而不会争用内存资源。
支持 CUDA 的 GPU 具有数百个内核,这些内核可以共同运行数千个计算线程。这些内核具有共享资源,包括寄存器文件和共享内存。片上共享内存允许在这些内核上运行的并行任务共享数据,而无需通过系统内存总线发送数据。
本指南将向您展示如何安装和检查 CUDA 开发工具的正确运行。
注意
有关安装 NVIDIA 驱动程序的说明,现在位于 https://docs.nvda.net.cn/datacenter/tesla/driver-installation-guide/index.html。
1.1. 系统要求
要在您的系统上使用 NVIDIA CUDA,您需要安装以下组件
支持 CUDA 的 GPU
带有 gcc 编译器和工具链的受支持 Linux 版本
CUDA 工具包(可在 https://developer.nvidia.com/cuda-downloads 获取)
CUDA 开发环境依赖于与主机开发环境(包括主机编译器和 C 运行时库)的紧密集成,因此仅在已针对此 CUDA 工具包版本进行限定的发行版版本上受支持。
下表列出了受支持的 Linux 发行版。请查看与该表关联的脚注。
发行版 |
内核1 |
默认 GCC |
GLIBC |
---|---|---|---|
x86_64 |
|||
RHEL 9.y (y <= 5) |
5.14.0-503 |
11.5.0 |
2.34 |
RHEL 8.y (y <= 10) |
4.18.0-553 |
8.5.0 |
2.28 |
OpenSUSE Leap 15.y (y <= 6) |
6.4.0-150600.21 |
7.5.0 |
2.38 |
Rocky Linux 8.y (y<=10) |
4.18.0-553 |
8.5.0 |
2.28 |
Rocky Linux 9.y (y<=5) |
5.14.0-503 |
11.5.0 |
2.34 |
SUSE SLES 15.y (y <= 6) |
6.4.0-150600.21 |
7.5.0 |
2.31 |
Ubuntu 24.04.z (z <= 1) LTS |
6.8.0-41 |
13.2.0 |
2.39 |
Ubuntu 22.04.z (z <= 5) LTS |
6.5.0-45 |
12.3.0 |
2.35 |
Ubuntu 20.04.z (z <= 6) LTS |
5.15.0-67 |
9.4.0 |
2.31 |
Debian 12.8 |
6.1.0-27 |
12.2.0 |
2.36 |
Fedora 41 |
6.11.4-301 |
14.2.1 |
2.40 |
KylinOS V10 SP3 2403 |
4.19.90-89.11.v2401 |
10.x |
2.28 |
MSFT Azure Linux 2.0 |
5.15.158.2-1 |
11.2.0 |
2.35 |
Amazon Linux 2023 |
6.1.82-99.168 |
11.4.1 |
2.34 |
Oracle Linux 8 |
4.18.0-553 |
8.5.0 |
2.28 |
Oracle Linux 9 |
5.14.0-427 |
11.4.1 |
2.34 |
Arm64 sbsa |
|||
RHEL 9.y (y <= 5) |
5.14.0-503 |
11.5.0 |
2.34 |
RHEL 8.y (y <= 10) |
4.18.0-553 |
8.5.0 |
2.28 |
SUSE SLES 15.y (y == 6) |
6.4.0-150600.21 |
7.5.0 |
2.38 |
Kylin V10 SP3 2403 |
4.19.90-89 |
10.x |
2.28 |
Ubuntu 24.04.z (z <= 1) LTS |
6.8.0-31 |
13.2.0 |
2.39 |
Ubuntu 22.04 LTS (z <= 5) LTS |
6.5.0-1019 |
11.4.0 |
2.35 |
Ubuntu 20.04.z (z <= 5) LTS |
5.4.0-174 |
11.4.0 |
2.31 |
Arm64 sbsa Jetson (dGPU) |
|||
20.04.06 LTS Rel35 JP 5.x |
5.10.65-tegra |
9.4.0 |
2.31 |
22.04.4 LTS Rel36 - JP6.x |
5.15.136-tegra |
11.4.0 |
2.35 |
AArch64 Jetson (iGPU) |
|||
L4T Ubuntu 22.04 Rel36 - JP6.x |
6.1.80-tegra |
11.4.0 |
2.35 |
以下注释适用于 CUDA 支持的内核版本
有关 Red Hat Enterprise Linux (RHEL) 上支持的特定内核版本,请访问 https://access.redhat.com/articles/3078。
SUSE Linux Enterprise Server (SLES) 的内核版本列表(包括发布日期)可在 https://www.suse.com/support/kb/doc/?id=000019587 获取。
Debian 11.x 的支持已弃用。
1.2. 操作系统支持策略
CUDA 对 Ubuntu 20.04.x、Ubuntu 22.04.x、Ubuntu 24.04.x、RHEL 8.x、RHEL 9.x、Rocky Linux 8.x、Rocky Linux 9.x、SUSE SLES 15.x、OpenSUSE Leap 15.x、Amazon linux 2023 和 Azure Linux 2.0 的支持将持续到每个操作系统定义的标准 EOSS。请参阅这些操作系统的支持生命周期以了解其支持时间表。
CUDA 支持最新的 Fedora 发行版本。支持的版本可能需要特定的 GCC 兼容性软件包。有关 Fedora 发布时间表,请访问 https://docs.fedoraproject.org/en-US/releases/。
CUDA 支持单个 KylinOS 发行版本。有关详细信息,请访问 https://www.kylinos.cn/。
请参阅这些受支持操作系统的支持生命周期,以了解其支持时间表并计划相应地迁移到较新版本。
1.3. 主机编译器支持策略
为了编译 CUDA 源代码中的 CPU “主机” 代码,CUDA 编译器 NVCC 需要在系统上安装兼容的主机编译器。Linux 平台上支持的主机编译器版本如下表所示。NVCC 对主机编译器的主要版本执行版本检查,因此将支持下面列出的编译器的较新次要版本,但不支持超出范围的主要版本。
发行版 |
GCC |
Clang |
NVHPC |
XLC |
ArmC/C++ |
ICC |
---|---|---|---|---|---|---|
x86_64 |
6.x - 14.x |
7.x - 19.x |
24.9 |
否 |
否 |
2021.7 |
Arm64 sbsa |
6.x - 14.x |
7.x - 19.x |
24.9 |
否 |
24.04 |
否 |
对于 GCC 和 Clang,上表指示了支持的最低版本和最新版本。如果您的 Linux 发行版可能使用比上面列出的版本更旧的 GCC 工具链作为默认设置,建议升级到较新的工具链 CUDA 11.0 或更高版本的工具包。例如,Red Hat Developer Toolset 提供了较新的 GCC 工具链。对于默认情况下提供的编译器版本早于 GCC 6 的平台,不支持链接到 CUDA 工具包附带的静态或动态库。对于上面列出的平台,我们仅支持 libstdc++(GCC 的实现)用于所有受支持的主机编译器。
1.3.1. 主机编译器兼容性软件包
非常新的发行版可能会附带比上面的“支持的编译器”表涵盖的更新的编译器。通常,这些发行版还提供 GCC 兼容性软件包,该软件包可以代替默认软件包使用。
根据发行版的不同,需要安装的软件包也不同,但是配置逻辑是相同的。如果需要,配置步骤将在特定 Linux 发行版的相应部分中描述,但是它们总是以配置 NVCC_BIN
环境变量结尾,如 NVCC 文档中所述。
1.3.2. 支持的 C++ 方言
NVCC 和 NVRTC(CUDA 运行时编译器)在受支持的主机编译器上支持以下 C++ 方言:C++11、C++14、C++17、C++20。NVCC 的默认 C++ 方言由用于编译的主机编译器的默认方言决定。有关语言支持的更多详细信息,请参阅主机编译器文档和CUDA 编程指南。
C++20 在主机代码和设备代码中都支持以下主机编译器版本。
GCC |
Clang |
NVHPC |
Arm C/C++ |
---|---|---|---|
>=10.x |
>=11.x |
>=22.x |
>=22.x |
1.4. 关于本文档
本文档适用于熟悉 Linux 环境以及从命令行编译 C 程序的读者。您不需要以前的 CUDA 经验或并行计算经验。注意:本指南仅涵盖在安装了 X Windows 的系统上的安装。
注意
本文档中的许多命令可能需要超级用户权限。在大多数 Linux 发行版上,这将要求您以 root 用户身份登录。对于已启用 sudo 软件包的系统,请为所有必要的命令使用 sudo 前缀。
2. 预安装操作
在 Linux 上安装 CUDA 工具包之前,必须执行一些操作
验证系统是否具有支持 CUDA 的 GPU。
验证系统是否正在运行受支持的 Linux 版本。
验证系统是否已安装 gcc。
下载 NVIDIA CUDA 工具包。
处理冲突的安装方法。
注意
您可以通过使用 -override
标志运行安装程序来覆盖安装时先决条件检查。请记住,仍然需要先决条件才能使用 NVIDIA CUDA 工具包。
2.1. 验证您是否拥有支持 CUDA 的 GPU
要验证您的 GPU 是否支持 CUDA,请转到您的发行版等效的“系统属性”,或者从命令行输入
lspci | grep -i nvidia
如果您没有看到任何设置,请通过在命令行输入 update-pciids
(通常位于 /sbin
中)来更新 Linux 维护的 PCI 硬件数据库,然后重新运行之前的 lspci
命令。
如果您的显卡来自 NVIDIA,并且在 https://developer.nvidia.com/cuda-gpus 中列出,则您的 GPU 支持 CUDA。
CUDA 工具包的发行说明还包含受支持产品的列表。
2.2. 验证您是否拥有受支持的 Linux 版本
CUDA 开发工具仅在某些特定的 Linux 发行版上受支持。这些在 CUDA 工具包发行说明中列出。
要确定您正在运行哪个发行版和发行号,请在命令行中键入以下内容
uname -m && cat /etc/*release
您应该看到类似于以下内容的输出,该输出已针对您的特定系统进行了修改
x86_64
Red Hat Enterprise Linux Workstation release 6.0 (Santiago)
x86_64
行表示您正在 64 位系统上运行。其余部分提供有关您的发行版的信息。
2.3. 验证系统是否已安装 gcc
使用 CUDA 工具包进行开发需要 gcc
编译器。运行 CUDA 应用程序不需要它。它通常作为 Linux 安装的一部分安装,并且在大多数情况下,随受支持的 Linux 版本一起安装的 gcc 版本将正常工作。
要验证系统上安装的 gcc 版本,请在命令行中键入以下内容
gcc --version
如果显示错误消息,则需要从 Linux 发行版安装开发工具,或者从 Web 获取 gcc
版本及其随附的工具链。
2.4. 选择安装方法
可以使用两种不同的安装机制来安装 CUDA 工具包:特定于发行版的软件包(RPM 和 Deb 软件包)或独立于发行版的软件包(runfile 软件包)。
独立于发行版的软件包的优点是在更广泛的 Linux 发行版上工作,但不更新发行版的本机软件包管理系统。特定于发行版的软件包与发行版的本机软件包管理系统交互。建议尽可能使用特定于发行版的软件包。
注意
对于本机开发和交叉开发,都必须使用特定于发行版的安装程序来安装工具包。有关更多详细信息,请参见 CUDA 跨平台安装 部分。
2.5. 下载 NVIDIA CUDA 工具包
NVIDIA CUDA 工具包可在 https://developer.nvidia.com/cuda-downloads 获取。
选择您正在使用的平台并下载 NVIDIA CUDA 工具包。
CUDA 工具包包含创建、构建和运行 CUDA 应用程序所需的工具,以及库、头文件和其他资源。
下载验证
可以通过将 https://developer.download.nvidia.com/compute/cuda/12.6.2/docs/sidebar/md5sum.txt 上发布的 MD5 校验和与下载文件的校验和进行比较来验证下载。如果任一校验和不同,则下载的文件已损坏,需要重新下载。
要计算下载文件的 MD5 校验和,请运行以下命令
md5sum <file>
2.6. 处理冲突的安装方法
在安装 CUDA 之前,应卸载任何可能冲突的先前安装。这不会影响以前未安装 CUDA 的系统,或者安装方法已保留(RPM/Deb 与 Runfile)的系统。有关详细信息,请参见下表。
已安装的工具包版本 == X.Y |
已安装的工具包版本 != X.Y |
||||
RPM/Deb |
run |
RPM/Deb |
run |
||
正在安装工具包版本 X.Y |
RPM/Deb |
无操作 |
卸载 Run |
无操作 |
无操作 |
run |
卸载 RPM/Deb |
卸载 Run |
无操作 |
无操作 |
使用以下命令卸载工具包 runfile 安装
sudo /usr/local/cuda-X.Y/bin/cuda-uninstaller
使用以下命令卸载 RPM/Deb 安装
sudo dnf remove <package_name> # RHEL 8 / Rocky Linux 8 / RHEL 9 / Rocky Linux 9 / Fedora / KylinOS 10 / Amazon Linux 2023
sudo tdnf remove <package_name> # Azure Linux
sudo zypper remove <package_name> # OpenSUSE / SLES
sudo apt-get --purge remove <package_name> # Debian / Ubuntu
3. 包管理器安装
基本说明可以在 快速入门指南中找到。请继续阅读以获取更详细的说明。
3.1. 概述
使用 RPM 或 Debian 软件包进行安装可与系统的软件包管理系统交互。当使用 RPM 或 Debian 本地仓库安装程序时,下载的软件包包含存储在本地文件系统 /var/ 中的仓库快照。这样的软件包仅通知软件包管理器在哪里可以找到实际的安装软件包,但不会安装它们。
如果启用了在线网络仓库,则将在安装时使用软件包管理器 apt-get、dnf、tdnf 或 zypper 自动下载 RPM 或 Debian 软件包。
特定于发行版的说明详细说明了如何安装 CUDA
最后,详细介绍了某些有用的软件包管理器功能。
这些说明仅适用于本机开发。对于跨平台开发,请参见 CUDA 跨平台环境 部分。
注意
可选组件(例如 nvidia-fs
、libnvidia_nscq
和 fabricmanager
)默认情况下未安装,必须根据需要单独安装。
3.2. RHEL / Rocky
3.2.1. 准备 RHEL / Rocky
执行预安装操作。
满足第三方软件包依赖性
启用可选仓库
仅在 RHEL 9 Linux 上,执行以下步骤以启用可选仓库。
在 x86_64 系统上
subscription-manager repos --enable=rhel-9-for-x86_64-appstream-rpms subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpms subscription-manager repos --enable=codeready-builder-for-rhel-9-x86_64-rpms
仅在 RHEL 8 Linux 上,执行以下步骤以启用可选仓库。
在 x86_64 系统上
subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms subscription-manager repos --enable=codeready-builder-for-rhel-8-x86_64-rpms
移除过期的签名密钥
sudo rpm --erase gpg-pubkey-7fa2af80*
选择安装方法:RHEL / Rocky 的本地仓库安装 或 RHEL / Rocky 的网络仓库安装。
3.2.2. RHEL / Rocky 的本地仓库安装
在文件系统上安装本地仓库
sudo rpm --install cuda-repo-<distro>-X-Y-local-<version>*.<arch>.rpm
其中
<distro>
应替换为以下之一rhel8
rhel9
并且
<arch>
应替换为以下之一x86_64
aarch64
3.2.3. RHEL / Rocky 的网络仓库安装
启用网络仓库
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-<distro>.repo
其中
<distro>/<arch>
应替换为以下之一rhel8/sbsa
rhel8/x86_64
rhel9/sbsa
rhel9/x86_64
安装新的 CUDA 公共 GPG 密钥
CUDA 仓库(基于 RPM 的发行版)的新 GPG 公共密钥是 d42d0685。
在 RHEL 的全新安装上,dnf 软件包管理器将在首次安装软件包时提示用户接受新密钥。当提示时,指示您接受更改。
对于升级,您还必须获取更新的 .repo 条目
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-<distro>.repo
清理 DNF 仓库
sudo dnf clean all
3.2.4. RHEL / Rocky 的通用说明
以下说明适用于本地和网络安装。
安装 CUDA SDK
sudo dnf install cuda-toolkit
安装 GPUDirect 文件系统
sudo dnf install nvidia-gds
添加 libcuda.so 符号链接(如果需要)
libcuda.so
库安装在/usr/lib{,64}/nvidia
目录中。对于使用libcuda.so
的现有项目,从/usr/lib{,64}
目录中的libcuda.so
添加符号链接可能很有用。重启系统
sudo reboot
执行安装后操作。
3.3. KylinOS
3.3.1. 准备 KylinOS
3.3.2. KylinOS 的本地仓库安装
在文件系统上安装本地仓库
sudo rpm --install cuda-repo-<distro>-X-Y-local-<version>*.<arch>.rpm
其中
<distro>
应替换为以下之一kylin10
并且
<arch>
应替换为以下之一x86_64
aarch64
3.3.3. KylinOS 的网络仓库安装
启用网络仓库
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-<distro>.repo
其中
<distro>/<arch>
应替换为以下之一kylin10/sbsa
kylin10/x86_64
安装新的 CUDA 公共 GPG 密钥
CUDA 仓库(基于 RPM 的发行版)的新 GPG 公共密钥是 d42d0685。
在 KylinOS 的全新安装上,dnf 软件包管理器将在首次安装软件包时提示用户接受新密钥。当提示时,指示您接受更改。
清理 DNF 仓库
sudo dnf clean all
3.3.4. KylinOS 的通用说明
以下说明适用于本地和网络安装。
安装 CUDA SDK
sudo dnf install cuda-toolkit
安装 GPUDirect 文件系统
sudo dnf install nvidia-gds
添加 libcuda.so 符号链接(如果需要)
libcuda.so
库安装在/usr/lib{,64}/nvidia
目录中。对于使用libcuda.so
的现有项目,从/usr/lib{,64}
目录中的libcuda.so
添加符号链接可能很有用。重启系统
sudo reboot
执行安装后操作。
3.4. Fedora
3.4.1. 准备 Fedora
3.4.2. Fedora 的本地仓库安装
在文件系统上安装本地仓库
sudo rpm --install cuda-repo-<distro>-X-Y-local-<version>*.x86_64.rpm
其中
<distro>
应替换为以下之一fedora39
3.4.3. Fedora 的网络仓库安装
启用网络仓库
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/x86_64/cuda-<distro>.repo
其中
<distro>
应替换为以下之一fedora39
安装新的 CUDA 公共 GPG 密钥
CUDA 仓库(基于 RPM 的发行版)的新 GPG 公共密钥是 d42d0685。
在 Fedora 的全新安装上,dnf 软件包管理器将在首次安装软件包时提示用户接受新密钥。当提示时,指示您接受更改。
对于升级,您还必须获取更新的
.repo
条目sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/x86_64/cuda-<distro>.repo
清理 DNF 仓库
sudo dnf clean all
3.4.4. Fedora 的通用安装说明
以下说明适用于 Fedora 的本地和网络安装。
安装 CUDA SDK
sudo dnf install cuda-toolkit
重启系统
sudo reboot
添加 libcuda.so 符号链接(如果需要)
libcuda.so
库安装在/usr/lib{,64}/nvidia
目录中。对于使用libcuda.so
的现有项目,从/usr/lib{,64}
目录中的libcuda.so
添加符号链接可能很有用。执行安装后操作。
3.4.5. Fedora 的 GCC 兼容性软件包
支持的 Fedora 版本可能附带比 NVCC 实际支持的更新的编译器。可以通过安装 GCC 兼容性软件包并设置一些环境变量来克服此问题。
例如,Fedora 41 附带 GCC 14 以及兼容的 GCC 13 版本,该版本可用于 NVCC。要安装和配置本地 NVCC 二进制文件以使用该版本,请按以下步骤操作。
安装所需的软件包
sudo dnf install gcc13-c++
然后,这些二进制文件以以下方式出现在系统上
/usr/bin/gcc-13 /usr/bin/g++-13
覆盖默认的
g++
编译器。 请参阅 NVCC 关于环境变量的文档。 例如export NVCC_CCBIN='g++-13'
3.5. SLES
3.5.1. 准备 SLES
执行预安装操作。
在 SLES12 SP4 上,在继续之前安装 Mesa-libgl-devel Linux 软件包。
将用户添加到视频组
sudo usermod -a -G video <username>
移除过期的签名密钥
sudo rpm --erase gpg-pubkey-7fa2af80*
3.5.2. SLES 本地仓库安装
在文件系统上安装本地仓库
sudo rpm --install cuda-repo-<distro>-X-Y-local-<version>*.<arch>.rpm
其中
<distro>
应替换为以下之一sles15
并且
<arch>
应替换为以下之一x86_64
aarch64
3.5.3. SLES 网络仓库安装
启用网络仓库
sudo zypper addrepo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-<distro>.repo
其中
<distro>/<arch>
应替换为以下之一sles15/sbsa
sles15/x86_64
安装新的 CUDA 公共 GPG 密钥
CUDA 仓库(基于 RPM 的发行版)的新 GPG 公共密钥是 d42d0685。
在全新安装的 SLES 上,zypper 包管理器会在首次安装软件包时提示用户接受新密钥。 当提示时,请指示您接受更改。
对于升级,您还必须获取更新的 .repo 条目
sudo zypper removerepo cuda-<distro>-<arch> sudo zypper addrepo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-<distro>.repo
刷新 Zypper 仓库缓存
sudo SUSEConnect --product PackageHub/<SLES version number>/<arch> sudo zypper refresh
3.5.4. SLES 常用安装说明
这些说明适用于 SLES 的本地和网络安装。
安装 CUDA SDK
sudo zypper install cuda-toolkit
重启系统
sudo reboot
执行安装后操作。
3.6. OpenSUSE
3.6.1. 准备 OpenSUSE
3.6.2. OpenSUSE 本地仓库安装
在文件系统上安装本地仓库
sudo rpm --install cuda-repo-<distro>-X-Y-local-<version>*.x86_64.rpm
其中
<distro>
应替换为以下之一opensuse15
3.6.3. OpenSUSE 网络仓库安装
启用网络仓库
sudo zypper addrepo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/x86_64/cuda-<distro>.repo
其中
<distro>
应替换为以下之一opensuse15
安装新的 CUDA 公共 GPG 密钥
CUDA 仓库(基于 RPM 的发行版)的新 GPG 公钥是 d42d0685。 在全新安装的 openSUSE 上,zypper 包管理器会在首次安装软件包时提示用户接受新密钥。 当提示时,请指示您接受更改。
对于升级,您还必须获取更新的 .repo 条目
sudo zypper removerepo cuda-<distro>-x86_64 sudo zypper addrepo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/x86_64/cuda-<distro>.repo
刷新 Zypper 仓库缓存
sudo zypper refresh
3.6.4. OpenSUSE 常用安装说明
这些说明适用于 OpenSUSE 的本地和网络安装。
安装 CUDA SDK
sudo zypper install cuda-toolkit
重启系统
sudo reboot
执行安装后操作。
3.7. WSL
如果您在 WSL 环境中安装,则必须使用这些说明。
3.7.1. 准备 WSL
3.7.2. WSL 本地仓库安装
在文件系统上安装本地仓库
sudo dpkg -i cuda-repo-<distro>-X-Y-local_<version>*_amd64.deb
其中
<distro>
应替换为以下之一wsl-ubuntu
注册临时公用 GPG 密钥
sudo cp /var/cuda-repo-<distro>-X-Y-local/cuda-*-keyring.gpg /usr/share/keyrings/
添加 pin 文件以优先使用 CUDA 仓库
wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/x86_64/cuda-<distro>.pin sudo mv cuda-<distro>.pin /etc/apt/preferences.d/cuda-repository-pin-600
3.7.3. WSL 网络仓库安装
CUDA 仓库(基于 Debian 的发行版)的新 GPG 公钥是 3bf863cc。 这必须在系统上注册,可以使用 cuda-keyring
软件包或手动注册; apt-key
命令已弃用,不建议使用。
安装新的 cuda-keyring 软件包
wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb
其中
<distro>
应替换为以下之一wsl-ubuntu
3.7.4. WSL 常用安装说明
这些说明适用于 WSL 的本地和网络安装。
更新 Apt 仓库缓存
sudo apt-get update
安装 CUDA SDK
sudo apt-get install cuda-toolkit
执行安装后操作。
3.8. Ubuntu
3.8.1. 准备 Ubuntu
3.8.2. Ubuntu 本地仓库安装
在文件系统上安装本地仓库
sudo dpkg -i cuda-repo-<distro>-X-Y-local_<version>*_<arch>.deb
其中
<distro>
应替换为以下之一ubuntu2004
ubuntu2204
ubuntu2404
并且
<arch>
应替换为以下之一amd64
arm64
注册临时公用 GPG 密钥
sudo cp /var/cuda-repo-<distro>-X-Y-local/cuda-*-keyring.gpg /usr/share/keyrings/
添加 pin 文件以优先使用 CUDA 仓库
wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-<distro>.pin sudo mv cuda-<distro>.pin /etc/apt/preferences.d/cuda-repository-pin-600
3.8.3. Ubuntu 网络仓库安装
CUDA 仓库的新 GPG 公钥是 3bf863cc。 这必须在系统上注册,可以使用 cuda-keyring
软件包或手动注册; apt-key
命令已弃用,不建议使用。
安装新的 cuda-keyring 软件包
wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb
其中
<distro>/<arch>
应替换为以下之一ubuntu2004/arm64
ubuntu2004/sbsa
ubuntu2004/x86_64
ubuntu2204/sbsa
ubuntu2204/x86_64
ubuntu2404/sbsa
ubuntu2404/x86_64
注意
arm64-Jetson 仓库
原生:
<distro>/arm64
sudo dpkg -i cuda-keyring_1.1-1_all.deb
3.8.4. Ubuntu 常用安装说明
这些说明适用于 Ubuntu 的本地和网络安装。
更新 Apt 仓库缓存
sudo apt-get update
安装 CUDA SDK
注意
这两个命令必须分开执行。
sudo apt-get install cuda-toolkit
要包含所有 GDS 软件包
sudo apt-get install nvidia-gds
对于原生 arm64-Jetson 仓库,请安装其他软件包
sudo apt-get install cuda-compat
重启系统
sudo reboot
执行安装后操作。
3.9. Debian
3.9.1. 准备 Debian
3.9.2. Debian 本地仓库安装
在文件系统上安装本地仓库
sudo dpkg -i cuda-repo-<distro>-X-Y-local_<version>*_amd64.deb
其中
<distro>
应替换为以下之一debian11
debian12
注册临时公用 GPG 密钥
sudo cp /var/cuda-repo-<distro>-X-Y-local/cuda-*-keyring.gpg /usr/share/keyrings/
3.9.3. Debian 网络仓库安装
CUDA 仓库(基于 Debian 的发行版)的新 GPG 公钥是 3bf863cc。 这必须在系统上注册,可以使用 cuda-keyring 软件包或手动注册; apt-key
命令已弃用,不建议使用。
安装新的 cuda-keyring 软件包
wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-keyring_1.1-1_all.deb
其中
<distro>/<arch>
应替换为以下之一debian11/x86_64
debian12/x86_64
sudo dpkg -i cuda-keyring_1.1-1_all.deb
3.9.4. Debian 常用安装说明
这些说明适用于 Debian 的本地和网络安装。
更新 Apt 仓库缓存
sudo apt-get update
注意
如果您使用的是 Debian 11,则可能需要改为运行
sudo apt-get --allow-releaseinfo-change update
安装 CUDA SDK
sudo apt-get install cuda-toolkit
重启系统
sudo reboot
执行安装后操作。
3.10. Amazon Linux
3.10.1. 准备 Amazon Linux
3.10.2. Amazon Linux 本地仓库安装
在文件系统上安装本地仓库
sudo rpm --install cuda-repo-<distro>-X-Y-local-<version>*.x86_64.rpm
其中
<distro>
应替换为以下之一amzn2023
3.10.3. Amazon Linux 网络仓库安装
启用网络仓库
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/x86_64/cuda-<distro>.repo
清理 DNF 仓库
sudo dnf clean all
3.10.4. Amazon Linux 常用安装说明
这些说明适用于 Amazon Linux 的本地和网络安装。
安装 CUDA SDK
sudo dnf install cuda-toolkit
安装 GPUDirect 文件系统
sudo dnf install nvidia-gds
添加 libcuda.so 符号链接(如果需要)
libcuda.so
库安装在/usr/lib{,64}/nvidia
目录中。对于使用libcuda.so
的现有项目,从/usr/lib{,64}
目录中的libcuda.so
添加符号链接可能很有用。重启系统
sudo reboot
执行安装后操作。
3.11. Azure Linux CM2
3.11.1. 准备 Azure Linux CM2
3.11.2. Azure Linux 本地仓库安装
在文件系统上安装本地仓库
sudo rpm --install cuda-repo-<distro>-X-Y-local-<version>*.x86_64.rpm
其中
<distro>
应替换为以下之一cm2
3.11.3. Azure Linux 网络仓库安装
启用网络仓库
curl https://developer.download.nvidia.com/compute/cuda/repos/<distro>/x86_64/cuda-<distro>.repo | sudo tee /etc/yum.repos.d/cuda-<distro>.repo
清理 TDNF 仓库缓存
sudo tdnf clean expire-cache
3.11.4. Azure Linux 常用安装说明
这些说明适用于 Azure Linux 的本地和网络安装。
启用 Mariner 扩展仓库
sudo tdnf install mariner-repos-extended
安装 Cuda SDK
sudo tdnf install cuda-toolkit
安装 GPUDirect 文件系统
sudo tdnf install nvidia-gds
重启系统
sudo reboot
执行安装后操作 <post-installation-actions>。
3.12. 其他软件包管理器功能
以下是软件包管理器的其他一些功能,用户可以利用这些功能。
3.12.1. 可用软件包
推荐的安装包是 cuda
软件包。 此软件包将安装本地开发所需的其他 CUDA 软件包的完整集合,并且应涵盖大多数情况。
cuda
软件包安装用于本地开发的所有可用软件包。 其中包括编译器、调试器、分析器、数学库等等。 对于 x86_64 平台,这还包括 Nsight Eclipse Edition 和可视化分析器。
在受支持的平台上,cuda-cross-aarch64
和 cuda-cross-sbsa
软件包分别安装用于交叉平台开发到 arm64-Jetson 和 arm64-Server 的所有软件包。
注意
32 位编译本机和交叉编译已从 CUDA 12.0 及更高版本的工具包中删除。 对于 32 位编译,请使用早期版本的 CUDA 工具包。 Hopper 不支持 32 位应用程序。
上述软件包安装的软件包也可以通过显式指定其名称来单独安装。 可用软件包的列表可以通过以下方式获得
dnf --disablerepo="*" --enablerepo="cuda*" list available # Amazon Linux / Fedora / KylinOS / RHEL / Rocky Linux
tdnf --disablerepo="*" --enablerepo="cuda-cm2-<cuda X-Y version>-local" list available # Azure Linux
zypper packages -r cuda # OpenSUSE / SLES
cat /var/lib/apt/lists/*cuda*Packages | grep "Package:" # Debian / Ubuntu
3.12.2. 元软件包
元软件包是 RPM/Deb/Conda 软件包,其中不包含(或很少包含)文件,但具有多个依赖项。 它们用于在您可能不知道所需软件包的详细信息时安装许多 CUDA 软件包。 下表列出了元软件包。
元软件包 |
目的 |
---|---|
cuda |
安装所有 CUDA 工具包和驱动程序软件包。 处理升级到下一个版本的 |
cuda-12-8 |
安装所有 CUDA 工具包和驱动程序软件包。 保持在 12.5 版本,直到安装其他 CUDA 版本。 |
cuda-toolkit-12-8 |
安装开发 CUDA 应用程序所需的所有 CUDA 工具包软件包。 不包括驱动程序。 |
cuda-toolkit-16 |
安装开发应用程序所需的所有 CUDA 工具包软件包。 不会升级到 12.x 系列工具包之外。 不包括驱动程序。 |
cuda-toolkit |
安装开发应用程序所需的所有 CUDA 工具包软件包。 处理升级到下一个 12.x 版本的 CUDA(发布时)。 不包括驱动程序。 |
cuda-tools-12-8 |
安装所有 CUDA 命令行和可视化工具。 |
cuda-runtime-12-8 |
安装运行 CUDA 应用程序所需的所有 CUDA 工具包软件包,以及驱动程序软件包。 |
cuda-compiler-12-8 |
安装所有 CUDA 编译器软件包。 |
cuda-libraries-12-8 |
安装所有运行时 CUDA 库软件包。 |
cuda-libraries-dev-12-8 |
安装所有开发 CUDA 库软件包。 |
3.12.3. 软件包升级
cuda
软件包指向 CUDA 工具包的最新稳定版本。 当新版本可用时,请使用以下命令升级工具包
3.12.3.1. Amazon Linux
sudo dnf upgrade cuda-toolkit
3.12.3.2. Fedora
当将工具包升级到新的主要分支时
sudo dnf install cuda-toolkit
当将工具包升级到新的次要分支时
sudo dnf upgrade cuda-toolkit
3.12.3.3. KylinOS / RHEL / Rocky Linux
sudo dnf install cuda-toolkit
3.12.3.4. Azure Linux
sudo tdnf install cuda-toolkit
3.12.3.5. OpenSUSE / SLES
sudo zypper install cuda-toolkit
3.12.3.6. Debian / Ubuntu
sudo apt-get install cuda-toolkit
3.12.3.7. 其他软件包注意事项
cuda-cross-<arch>
软件包也可以以相同方式升级。
某些桌面环境(例如 GNOME 或 KDE)会在新软件包可用时显示通知警报。
要避免任何自动升级,并将工具包安装锁定到 X.Y 版本,请安装 cuda-toolkit-X-Y
或 cuda-cross-<arch>-X-Y
软件包。
支持并行安装。 例如,要同时安装 X.Y CUDA 工具包和 X.Y+1 CUDA 工具包,请安装 cuda-toolkit-X.Y
和 cuda-toolkit-X.Y+1
软件包。
4. 驱动程序安装
有关驱动程序安装的更多信息,请参阅 Linux 驱动程序安装指南
5. Runfile 安装
基本说明可以在 快速入门指南中找到。请继续阅读以获取更详细的说明。
本节介绍使用独立安装程序时 CUDA 的安装和配置。 独立安装程序是一个 .run
文件,并且是完全独立的。
5.1. Runfile 概述
Runfile 安装通过交互式基于 ncurses 的界面安装 CUDA 工具包。
安装步骤 在下面列出。
Runfile 安装不包括对跨平台开发的支持。 对于跨平台开发,请参阅 CUDA 跨平台环境 部分。
5.2. 安装
执行预安装操作。
重启进入文本模式(运行级别 3)。
这通常可以通过将数字“3”添加到系统内核引导参数的末尾来完成。
由于 NVIDIA 驱动程序尚未安装,文本终端可能无法正确显示。 临时将 “nomodeset” 添加到系统内核引导参数可能会解决此问题。
有关如何进行上述引导参数更改的信息,请查阅系统引导加载程序文档。
运行安装程序并按照屏幕提示进行操作
sudo sh cuda_<version>_linux.run
安装程序将提示以下内容
EULA 接受
CUDA 工具包安装、位置和
/usr/local/cuda
符号链接
工具包的默认安装位置是
/usr/local/cuda-12.6
/usr/local/cuda
符号链接指向安装 CUDA 工具包的位置。 此链接允许项目使用最新的 CUDA 工具包,而无需任何配置文件更新。必须使用足够的权限执行安装程序才能执行某些操作。 当当前权限不足以执行操作时,安装程序将要求用户输入密码以尝试使用 root 权限进行安装。 导致安装程序尝试使用 root 权限进行安装的操作包括
将 CUDA 工具包安装到用户没有写入权限的位置
创建
/usr/local/cuda
符号链接
如上所示,使用 sudo 运行安装程序将授予安装到需要 root 权限的目录的权限。 使用 sudo 运行安装程序时创建的目录和文件将具有 root 所有权。
重启系统以重新加载图形界面
sudo reboot
执行安装后操作。
5.3. 高级选项
操作 |
使用的选项 |
说明 |
---|---|---|
静默安装 |
|
任何静默安装都必需。 基于下面提供的选项执行安装,无需进一步的用户输入,并且命令行输出最少。 静默安装对于编写 CUDA 安装脚本很有用。 使用此选项意味着接受 EULA。 以下标志可用于自定义安装期间执行的操作。 如果使用非 root 权限运行,则必须传递 |
|
安装 CUDA 驱动程序。 |
|
|
安装 CUDA 工具包。 |
|
|
将 CUDA 工具包安装到 <path> 目录。 如果未提供,则使用默认路径 |
|
|
将库安装到 <path> 目录。 如果未提供 <path>,则使用发行版的默认路径。 这仅适用于 CUDA 工具包路径之外安装的库。 |
|
提取 |
|
将以下内容提取到 <path>:驱动程序 runfile,工具包的原始文件到 <path>。 当有人想要使用驱动程序安装程序提供的一个或多个命令行选项安装驱动程序时,这尤其有用,这些选项在此安装程序中未公开。 |
覆盖安装检查 |
|
忽略编译器、第三方库和工具包检测检查,这些检查会阻止 CUDA 工具包安装。 |
无 OpenGL 库 |
|
阻止驱动程序安装安装 NVIDIA 的 GL 库。 适用于显示器由非 NVIDIA GPU 驱动的系统。 在此类系统中,NVIDIA 的 GL 库可能会阻止 X 正确加载。 |
无 man 页面 |
|
不要在 |
覆盖内核源 |
|
告诉驱动程序安装在构建 NVIDIA 内核模块时使用 <path> 作为内核源目录。 对于内核源安装在非标准位置的系统是必需的。 |
运行 nvidia-xconfig |
|
告诉驱动程序安装运行 nvidia-xconfig 以更新系统 X 配置文件,以便使用 NVIDIA X 驱动程序。 预先存在的 X 配置文件将被备份。 |
无 nvidia-drm 内核模块 |
|
不要安装 nvidia-drm 内核模块。 此选项仅应用于解决在不需要提供功能的系统上构建或安装 nvidia-drm 内核模块的失败问题。 |
自定义临时目录选择 |
|
在 <path> 中而不是 |
内核模块构建目录 |
|
告诉驱动程序安装在构建 NVIDIA 内核模块时使用内核源的传统或开放风格。 kernel-open 风格仅在 Turing GPU 及更新版本上受支持。 |
|
告诉驱动程序安装在构建 NVIDIA 内核模块时使用内核源的传统风格。 |
|
|
告诉驱动程序安装在构建 NVIDIA 内核模块时使用内核源的开放风格。 kernel-open 风格仅在 Turing GPU 及更新版本上受支持。 |
|
显示安装程序选项 |
|
将命令行选项列表打印到 stdout。 |
5.4. 卸载
要卸载 CUDA 工具包,请运行工具包的 bin 目录中提供的卸载脚本。 默认情况下,它位于 /usr/local/cuda-12.6/bin
sudo /usr/local/cuda-12.6/bin/cuda-uninstaller
6. Conda 安装
本节介绍使用 Conda 安装程序时 CUDA 的安装和配置。 Conda 软件包可在 https://anaconda.org/nvidia 上找到。
6.1. Conda 概述
Conda 安装安装 CUDA 工具包。 安装步骤在下面列出。
6.2. 使用 Conda 安装 CUDA
要使用 Conda 执行所有 CUDA 工具包组件的基本安装,请运行以下命令
conda install cuda -c nvidia
6.3. 使用 Conda 卸载 CUDA
要使用 Conda 卸载 CUDA 工具包,请运行以下命令
conda remove cuda
6.4. 安装以前的 CUDA 版本
在特定 CUDA 版本下发布的所有 Conda 软件包都标有该发布版本。 要安装以前的版本,请在 install
命令中包含该标签,例如
conda install cuda -c nvidia/label/cuda-12.4.0
6.5. 从 cudatoolkit 软件包升级
如果您之前使用 cudatoolkit
软件包安装了 CUDA,并且想要保持类似的安装占用空间,则可以将安装限制为以下软件包
cuda-libraries-dev
cuda-nvcc
cuda-nvtx
cuda-cupti
注意
某些额外文件(例如标头)将包含在此安装中,这些文件未包含在 cudatoolkit
软件包中。 如果您需要进一步减少安装,请将 cuda-libraries-dev
替换为您需要的特定库。
7. Pip Wheels
NVIDIA 提供 Python Wheels 以通过 pip 安装 CUDA,主要用于将 CUDA 与 Python 结合使用。 这些软件包旨在用于运行时,目前不包括开发人员工具(这些工具可以单独安装)。
请注意,使用此安装方法,CUDA 安装环境通过 pip 管理,并且必须格外小心地设置您的主机环境,以便在 pip 环境之外使用 CUDA。
先决条件
要安装 Wheels,您必须首先安装 nvidia-pyindex
软件包,这是设置 pip 安装以从 NVIDIA NGC PyPI 仓库获取其他 Python 模块所必需的。 如果您的 pip 和 setuptools Python 模块不是最新的,请使用以下命令升级这些 Python 模块。 如果这些 Python 模块已过时,则本节稍后介绍的命令可能会失败。
python3 -m pip install --upgrade setuptools pip wheel
您现在应该能够安装 nvidia-pyindex
模块。
python3 -m pip install nvidia-pyindex
如果您的项目正在使用 requirements.txt
文件,则可以将以下行添加到您的 requirements.txt
文件中,作为安装 nvidia-pyindex
软件包的替代方法
--extra-index-url https://pypi.ac.cn/simple
步骤
安装 CUDA 运行时软件包
python3 -m pip install nvidia-cuda-runtime-cu12
(可选)使用以下命令安装下面列出的其他软件包
python3 -m pip install nvidia-<library>
元软件包
以下元软件包将在 Linux 上为指示的 CUDA 版本安装命名组件的最新版本。 “cu12” 应理解为 “cuda12”。
nvidia-cuda-runtime-cu12
nvidia-cuda-cccl-cu12
nvidia-cuda-cupti-cu12
nvidia-cuda-nvcc-cu12
nvidia-cuda-opencl-cu12
nvidia-cuda-nvrtc-cu12
nvidia-cublas-cu12
nvidia-cuda-sanitizer-api-cu12
nvidia-cufft-cu12
nvidia-curand-cu12
nvidia-cusolver-cu12
nvidia-cusparse-cu12
nvidia-npp-cu12
nvidia-nvfatbin-cu12
nvidia-nvjitlink-cu12
nvidia-nvjpeg-cu12
nvidia-nvml-dev-cu12
nvidia-nvtx-cu12
这些元软件包安装以下软件包
nvidia-cuda-runtime-cu128
nvidia-cuda-cccl-cu128
nvidia-cuda-cupti-cu128
nvidia-cuda-nvcc-cu128
nvidia-cuda-opencl-cu128
nvidia-cublas-cu126
nvidia-cuda-sanitizer-api-cu128
nvidia-cuda-nvrtc-cu128
nvidia-cufft-cu128
nvidia-curand-cu128
nvidia-cusolver-cu128
nvidia-cusparse-cu128
nvidia-npp-cu128
nvidia-nvfatbin-cu128
nvidia-nvjitlink-cu128
nvidia-nvjpeg-cu128
nvidia-nvml-dev-cu128
nvidia-nvtx-cu128
8. CUDA 跨平台环境
Ubuntu 20.04、Ubuntu 22.04、Ubuntu 24.04、KylinOS 10、RHEL 8、RHEL 9 和 SLES 15 支持 arm64-sbsa 的交叉开发。
Ubuntu 22.04 仅支持 arm64-Jetson 的交叉开发
我们建议选择与支持的交叉目标环境匹配的主机开发环境。 此选择有助于防止可能的主机/目标不兼容性,例如 GCC 或 GLIBC 版本不匹配。
8.1. CUDA 跨平台安装
以下某些步骤可能已作为本地安装部分的一部分执行。 可以安全地跳过这些步骤。
这些步骤应在 x86_64 主机系统上执行,而不是在目标系统上执行。 要在目标系统上安装本机 CUDA 工具包,请参阅软件包管理器安装中的本机安装部分。
8.1.1. Ubuntu
8.1.1.1. Ubuntu 的本地交叉仓库安装
使用以下命令安装仓库元数据包
sudo dpkg -i cuda-repo-cross-<arch>-<distro>-X-Y-local-<version>*_all.deb
其中
<arch>-<distro>
应替换为以下之一aarch64-ubuntu2204
sbsa-ubuntu2004
sbsa-ubuntu2204
sbsa-ubuntu2404
8.1.1.2. Ubuntu 的网络交叉仓库安装
CUDA 仓库的新 GPG 公钥是 3bf863cc。 这必须在系统上注册,可以使用 cuda-keyring
软件包或手动注册; apt-key
命令已弃用,不建议使用。
安装新的 cuda-keyring 软件包
wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb
其中
<distro>/<arch>
应替换为以下之一ubuntu2004/cross-linux-sbsa
ubuntu2204/cross-linux-aarch64
ubuntu2204/cross-linux-sbsa
ubuntu2404/cross-linux-sbsa
8.1.1.3. Ubuntu 的通用安装说明
更新 Apt 仓库缓存
sudo apt-get update
安装适当的跨平台 CUDA 工具包
对于 arm64-sbsa
sudo apt-get install cuda-cross-sbsa
对于 arm64-Jetson
sudo apt-get install cuda-cross-aarch64
对于 QNX
sudo apt-get install cuda-cross-qnx
执行后安装操作。
8.1.2. KylinOS / RHEL / Rocky Linux
8.1.2.1. KylinOS / RHEL / Rocky Linux 的本地交叉仓库安装
使用以下命令安装仓库元数据包
sudo rpm -i cuda-repo-cross-<arch>-<distro>-X-Y-local-<version>*.noarch.rpm
其中
<arch>-<distro>
应替换为以下之一sbsa-kylin10
sbsa-rhel8
sbsa-rhel9
8.1.2.2. KylinOS / RHEL / Rocky Linux 的网络交叉仓库安装
启用网络仓库
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-<distro>-cross-linux-sbsa.repo
其中
<distro>/<arch>
应替换为以下之一kylin10/cross-linux-sbsa
rhel8/cross-linux-sbsa
rhel9/cross-linux-sbsa
8.1.2.3. KylinOS / RHEL / Rocky Linux 的通用安装说明
清理 DNF 仓库
sudo dnf clean all
安装 CUDA 工具
sudo dnf install cuda-cross-sbsa
8.1.3. SLES
8.1.3.1. SLES 的本地交叉仓库安装
使用以下命令安装仓库元数据包
sudo rpm -i cuda-repo-cross-<arch>-<distro>-X-Y-local-<version>*.noarch.rpm
其中
<arch>-<distro>
应替换为以下之一sbsa-sles15
8.1.3.2. SLES 的网络交叉仓库安装
启用网络仓库
sudo zypper addrepo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-<distro>-cross-linux-sbsa.repo
其中
<distro>/<arch>
应替换为以下之一sles15/cross-linux-sbsa
8.1.3.3. SLES 的通用安装说明
刷新 Zypper 仓库缓存
sudo zypper refresh
安装 CUDA 工具
sudo zypper install cuda-cross-sbsa
9. Tarball 和 Zip 归档交付件
为了满足不断增长的客户群的需求,他们需要替代的安装程序包格式,以及社区 CI/CD 系统的输入手段,每个组件都提供了 tarball 和 zip 归档文件。
这些 tarball 和 zip 归档文件,也称为二进制归档文件,可在 https://developer.download.nvidia.com/compute/cuda/redist/ 找到。

这些组件的 .tar.xz 和 .zip 二进制归档文件不会取代现有的软件包,如 .deb、.rpm、runfile、conda 等,也不适用于一般消费,因为它们不是安装程序。然而,这种标准化方法将取代现有的 .txz 归档文件。
对于每个版本,都会提供一个 JSON 清单,例如 redistrib_11.4.2.json,它对应于 CUDA 11.4.2 版本标签(CUDA 11.4 更新 2),其中包括发布日期、每个组件的名称、许可证名称、每个平台的相对 URL 和校验和。
建议软件包维护人员在重新分发之前检查每个组件提供的 LICENSE。后续章节提供了针对使用 CMake 和 Bazel 构建系统的开发人员的说明。
9.1. 解析 Redistrib JSON
以下 JSON 清单示例包含每个组件的键:name、license、version 和平台数组,其中包括每个归档文件的 relative_path、sha256、md5 和 size(字节)。
{
"release_date": "2021-09-07",
"cuda_cudart": {
"name": "CUDA Runtime (cudart)",
"license": "CUDA Toolkit",
"version": "11.4.108",
"linux-x86_64": {
"relative_path": "cuda_cudart/linux-x86_64/cuda_cudart-linux-x86_64-11.4.108-archive.tar.xz",
"sha256": "d08a1b731e5175aa3ae06a6d1c6b3059dd9ea13836d947018ea5e3ec2ca3d62b",
"md5": "da198656b27a3559004c3b7f20e5d074",
"size": "828300"
},
"linux-ppc64le": {
"relative_path": "cuda_cudart/linux-ppc64le/cuda_cudart-linux-ppc64le-11.4.108-archive.tar.xz",
"sha256": "831dffe062ae3ebda3d3c4010d0ee4e40a01fd5e6358098a87bb318ea7c79e0c",
"md5": "ca73328e3f8e2bb5b1f2184c98c3a510",
"size": "776840"
},
"linux-sbsa": {
"relative_path": "cuda_cudart/linux-sbsa/cuda_cudart-linux-sbsa-11.4.108-archive.tar.xz",
"sha256": "2ab9599bbaebdcf59add73d1f1a352ae619f8cb5ccec254093c98efd4c14553c",
"md5": "aeb5c19661f06b6398741015ba368102",
"size": "782372"
},
"windows-x86_64": {
"relative_path": "cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-11.4.108-archive.zip",
"sha256": "b59756c27658d1ea87a17c06d064d1336576431cd64da5d1790d909e455d06d3",
"md5": "7f6837a46b78198402429a3760ab28fc",
"size": "2897751"
}
}
}
JSON 架构在 https://developer.download.nvidia.com/compute/redist/redistrib-v2.schema.json 中提供。
可在 GitHub 上找到解析这些 JSON 清单的示例脚本
下载每个归档文件
验证 SHA256 校验和
提取归档文件
展平到折叠目录结构中
产品 |
示例 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9.2. 将 Tarball 导入 CMake
将这些 tarball 导入 CMake 构建系统的推荐模块是通过 FindCUDAToolkit(3.17 及更高版本)。
注意
FindCUDA 模块已弃用。
可以使用 CUDAToolkit_ROOT
环境变量指定提取位置的路径。有关示例 CMakeLists.txt
和命令,请参阅 cmake/1_FindCUDAToolkit/。
对于旧版本的 CMake,ExternalProject_Add 模块是另一种方法。有关示例 CMakeLists.txt
文件和命令,请参阅 cmake/2_ExternalProject/。
9.3. 将 Tarball 导入 Bazel
将这些 tarball 导入 Bazel 构建系统的推荐方法是使用 http_archive 和 pkg_tar。
有关示例,请参阅 bazel/1_pkg_tar/。
10. 后安装操作
后安装操作必须手动执行。这些操作分为强制性、推荐性和可选性部分。
10.1. 强制性操作
在可以使用 CUDA 工具包之前,安装后必须执行一些操作。
10.1.1. 环境设置
PATH
变量需要包含 export PATH=/usr/local/cuda-12.8/bin${PATH:+:${PATH}}
。Nsight Compute 仅在 rpm/deb 安装方法中已移至 /opt/nvidia/nsight-compute/
。当使用 .run
安装程序时,它仍然位于 /usr/local/cuda-12.6/
下。
要将此路径添加到 PATH
变量
export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}
此外,当使用 runfile 安装方法时,LD_LIBRARY_PATH
变量需要在 64 位系统上包含 /usr/local/cuda-12.8/lib64
,或者在 32 位系统上包含 /usr/local/cuda-12.8/lib
要更改 64 位操作系统的环境变量
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
要更改 32 位操作系统的环境变量
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
请注意,当使用 runfile 安装方法和自定义安装路径时,上述路径会发生变化。
10.2. 推荐操作
建议执行其他操作来验证安装的完整性。
10.2.1. 安装可写示例
CUDA 示例现在位于 https://github.com/nvidia/cuda-samples 中,其中包括有关获取、构建和运行示例的说明。
10.2.2. 验证安装
在继续之前,务必验证 CUDA 工具包是否可以找到 CUDA 兼容硬件并与之正确通信。为此,您需要编译并运行一些示例程序,这些程序位于 https://github.com/nvidia/cuda-samples 中。
注意
确保 PATH 以及(如果使用 runfile 安装方法)LD_LIBRARY_PATH
变量已正确设置。
10.2.2.1. 运行二进制文件
编译后,从 https://github.com/nvidia/cuda-samples 中找到并运行 deviceQuery
。如果 CUDA 软件已正确安装和配置,则 deviceQuery
的输出应类似于图 1 中所示。

图 1 deviceQuery CUDA 示例的有效结果
您的系统上的确切外观和输出行可能有所不同。重要的结果是找到设备(第一个突出显示的行),设备与您系统上的设备匹配(第二个突出显示的行),以及测试通过(最后一个突出显示的行)。
如果安装了 CUDA 兼容设备,但 deviceQuery
报告没有 CUDA 兼容设备,则很可能意味着 /dev/nvidia*
文件丢失或权限错误。
在启用 SELinux
的系统上,您可能需要暂时禁用此安全功能才能运行 deviceQuery
。为此,请键入
setenforce 0
从命令行以超级用户身份。
运行 bandwidthTest
程序可确保系统和 CUDA 兼容设备能够正确通信。其输出显示在图 2 中。

图 2 bandwidthTest CUDA 示例的有效结果
请注意,您的 CUDA 兼容设备描述的测量值将因系统而异。重点是您获得测量值,并且倒数第二行(在图 2 中)确认所有必要的测试均已通过。
如果测试未通过,请确保您的系统上安装了 CUDA 兼容的 NVIDIA GPU,并确保已正确安装。
如果您在链接步骤中遇到困难(例如找不到库),请查阅 https://github.com/nvidia/cuda-samples 中的 Linux 发行说明。
10.2.3. 安装 Nsight Eclipse 插件
要安装 Nsight Eclipse 插件,请提供安装脚本
/usr/local/cuda-12.6/bin/nsight_ee_plugins_manage.sh install <eclipse-dir>
有关更多详细信息,请参阅 Nsight Eclipse 插件安装指南。
10.2.4. 本地仓库删除
建议在安装 CUDA SDK 后删除本地仓库安装程序。
Debian / Ubuntu
sudo apt-get remove --purge "cuda-repo-<distro>-X-Y-local*"
Amazon Linux / Fedora / KylinOS / RHEL / Rocky Linux
sudo dnf remove "cuda-repo-<distro>-X-Y-local*"
Azure Linux
sudo tdnf remove "cuda-repo-<distro>-X-Y-local*"
OpenSUSE / SLES
sudo zypper remove "cuda-repo-<distro>-X-Y-local*"
10.3. 可选操作
其他选项对于使用 CUDA 工具包不是必需的,但可用于提供其他功能。
10.3.1. 安装第三方库
一些 CUDA 示例使用第三方库,这些库可能未在您的系统上默认安装。这些示例在构建时尝试检测任何所需的库。
如果未检测到库,它将放弃自身并警告您缺少哪个库。要构建和运行这些示例,您必须安装缺少的库。如果未安装这些依赖项,请按照以下说明操作。
Amazon Linux / Fedora / KylinOS / RHEL / Rocky Linux
sudo dnf install freeglut-devel libX11-devel libXi-devel libXmu-devel \
make mesa-libGLU-devel freeimage-devel libglfw3-devel
SLES
sudo zypper install libglut3 libX11-devel libXi6 libXmu6 libGLU1 make
OpenSUSE
sudo zypper install freeglut-devel libX11-devel libXi-devel libXmu-devel \
make Mesa-libGL-devel freeimage-devel
Debian / Ubuntu
sudo apt-get install g++ freeglut3-dev build-essential libx11-dev \
libxmu-dev libxi-dev libglu1-mesa-dev libfreeimage-dev libglfw3-dev
10.3.2. 安装 cuda-gdb 的源代码
cuda-gdb
源代码必须使用 runfile 安装方法显式选择安装。在安装期间,在组件选择页面中,展开组件“CUDA Tools 12.8”并选择 cuda-gdb-src
进行安装。默认情况下,它处于未选中状态。
要使用 RPM 和 Debian 安装方法获取 cuda-gdb
的源代码副本,必须安装 cuda-gdb-src
软件包。
源代码以 tarball 形式安装在 /usr/local/cuda-12.8/extras
目录中。
10.3.3. 选择 CUDA 的活动版本
对于依赖于符号链接 /usr/local/cuda
和 /usr/local/cuda-MAJOR
的应用程序,您可能希望使用提供的替代方案更改为 CUDA 的其他已安装版本。
显示 CUDA 的活动版本和所有可用版本
update-alternatives --display cuda
显示给定主要 CUDA 版本的活动次要版本
update-alternatives --display cuda-12
更新 CUDA 的活动版本
sudo update-alternatives --config cuda
11. 删除 CUDA 工具包
请按照以下步骤正确地从您的系统中卸载 CUDA 工具包。这些步骤将确保卸载是干净的。
Amazon Linux / Fedora / Kylin OS / RHEL / Rocky Linux
删除 CUDA 工具包
sudo dnf remove "cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
"*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
Azure Linux
删除 CUDA 工具包
sudo tdnf remove "cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
清理卸载
sudo tdnf autoremove
OpenSUSE / SLES
删除 CUDA 工具包
sudo zypper remove "cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
"*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
Debian / Ubuntu
删除 CUDA 工具包
sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
"*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
清理卸载
sudo apt-get autoremove --purge -V
12. 高级设置
以下是关于一些高级设置场景的信息,这些场景未在上面的基本说明中涵盖。
场景 |
说明 |
安装 GPUDirect Storage |
请参阅 安装 GPUDirect Storage。 GDS 在两种不同的模式下受支持
它们的安装说明略有不同。由于软件依赖性限制,兼容模式是某些发行版上唯一支持的模式。 完整的 GDS 支持仅限于以下 Linux 发行版
|
使用软件包管理器安装方法将 CUDA 安装到特定目录。 |
RPM RPM 软件包不支持通过软件包管理器(Yum 和 Zypper)自定义安装位置,但可以使用 rpm 的 sudo rpm --install --relocate /usr/local/cuda-12.6=/new/toolkit package.rpm
您需要以正确的依赖顺序安装软件包;此任务通常由软件包管理器负责处理。例如,如果软件包“foo”依赖于软件包“bar”,则应先安装软件包“bar”,然后再安装软件包“foo”。您可以按如下方式检查 RPM 软件包的依赖项 rpm -qRp package.rpm
请注意,驱动程序软件包无法重定位。 Deb Deb 软件包不支持自定义安装位置。但是,可以提取 Deb 软件包的内容,并将文件移动到所需的安装位置。有关提取 Deb 软件包的更多详细信息,请参阅下一个场景。 |
提取安装程序的内容。 |
Runfile 可以使用 ./runfile.run --tar mxvf
./runfile.run -x
RPM 可以通过运行以下命令提取 RPM 软件包 rpm2cpio package.rpm | cpio -idmv
Deb 可以通过运行以下命令提取 Deb 软件包 dpkg-deb -x package.deb output_dir
|
修改 Ubuntu 的 apt 软件包管理器以查询特定存储库的特定架构。 当添加了外部架构时,这很有用,这会导致在更新存储库元数据时出现“404 Not Found”错误。 |
您希望限制为特定架构的每个存储库都必须修改其 架构受限的存储库条目如下所示 deb [arch=<arch1>,<arch2>] <url>
例如,如果您想将存储库限制为仅 amd64 和 i386 架构,它将如下所示 deb [arch=amd64,i386] <url>
没有必要限制 有关更多详细信息,请参阅 |
由于 TMP 目录中的空间有限,runfile 安装程序无法提取。 |
这可能会发生在 TMP 目录(通常为 |
如果出现错误: |
Debian 和 Ubuntu 这可能在卸载不同版本后安装 CUDA 时发生。在安装前使用以下命令 sudo rm -v /var/lib/apt/lists/*cuda* /var/lib/apt/lists/*nvidia*
|
Debian 和 Ubuntu 上的详细安装 |
使用 sudo apt-get install --verbose-versions cuda
|
13. 其他注意事项
现在您已经拥有了 CUDA 兼容硬件和 NVIDIA CUDA 工具包,您可以检查并享受众多包含的程序。要开始使用 CUDA 加速您自己的应用程序的性能,请查阅 CUDA C++ 编程指南,该指南位于 /usr/local/cuda-12.8/doc
中。
CUDA 工具包中包含许多有用的开发工具,可帮助您开发 CUDA 程序,例如 NVIDIA® Nsight™ Eclipse Edition、NVIDIA Visual Profiler、CUDA-GDB 和 CUDA-MEMCHECK。
如需有关编程问题的技术支持,请访问并参与开发者论坛:https://forums.developer.nvidia.com/c/accelerated-computing/cuda/206。
14. 常见问题解答
14.1. 如何在不同的位置安装工具包?
Runfile 安装程序在交互式安装期间会询问您希望将工具包安装在何处。如果使用非交互式安装进行安装,则可以使用 --toolkitpath
参数来更改安装位置
./runfile.run --silent \
--toolkit --toolkitpath=/my/new/toolkit
RPM 和 Deb 软件包无法直接使用软件包管理器安装到自定义安装位置。有关更多信息,请参阅高级设置部分中的“使用软件包管理器安装方法将 CUDA 安装到特定目录”场景。
14.2. 当我尝试构建 CUDA 应用程序时,为什么会看到“nvcc: No such file or directory”?
您的 PATH 环境变量未正确设置。确保您的 PATH 包含您安装工具包的 bin 目录,通常为 /usr/local/cuda-12.8/bin
。
export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}
14.4. 为什么我在 Ubuntu 上更新存储库元数据时看到多个“404 Not Found”错误?
添加外部架构后会发生这些错误,因为 apt 正在尝试查询系统 sources.list 文件中列出的每个存储库中的每个架构。不为新添加的架构托管软件包的存储库将显示此错误。虽然很嘈杂,但错误本身并无害。请参阅高级设置部分,了解有关如何修改 sources.list
文件以防止这些错误的详细信息。
14.5. 如何告诉 X 忽略 GPU 以进行仅计算使用?
要确保 X 不会将特定 GPU 用于显示,您需要指定要用于显示的其他 GPU。有关更多信息,请参阅高级设置部分中的“使用特定 GPU 渲染显示器”场景。
14.6. 为什么 cuda-repo 软件包不安装 CUDA 工具包?
当使用 RPM 或 Deb 时,下载的软件包是存储库软件包。此类软件包仅告知软件包管理器在哪里可以找到实际的安装软件包,但不会安装它们。
有关更多详细信息,请参阅软件包管理器安装部分。
14.7. 如何使用网络仓库安装旧版本的 CUDA?
根据您的系统配置,您可能无法使用 cuda 元软件包安装旧版本的 CUDA。为了安装特定版本的 CUDA,您可能需要指定通常由 cuda 元软件包安装的所有软件包,以及您要安装的版本。
如果您使用 yum 安装特定版本的旧软件包,则依赖项可能无法按预期解析。在这种情况下,您可能需要将“--setopt=obsoletes=0
”传递给 yum,以允许安装在您尝试安装的版本之后被废弃的软件包。
14.8. 如何处理“Errors were encountered while processing: glx-diversions”?
当尝试在干净的 .deb 安装后卸载 CUDA 时,有时会发生这种情况。运行以下命令
sudo apt-get install glx-diversions --reinstall
sudo apt-get remove nvidia-alternative
然后重新运行来自删除 CUDA 工具包的命令。
15. 声明
15.1. 声明
本文件仅供参考,不应被视为对产品特定功能、状况或质量的保证。NVIDIA Corporation(“NVIDIA”)对本文档所含信息的准确性或完整性不作任何明示或暗示的陈述或保证,并且对本文档中包含的任何错误不承担任何责任。对于因使用此类信息而造成的后果或使用,或因其使用可能导致的侵犯第三方专利或其他权利的行为,NVIDIA概不负责。本文档不构成对开发、发布或交付任何材料(如下所定义)、代码或功能的承诺。
NVIDIA 保留随时对此文档进行更正、修改、增强、改进和任何其他更改的权利,恕不另行通知。
客户在下订单前应获取最新的相关信息,并应验证此类信息是否为最新且完整。
NVIDIA 产品的销售受订单确认时提供的 NVIDIA 标准销售条款和条件约束,除非 NVIDIA 和客户的授权代表签署的个别销售协议(“销售条款”)另有约定。NVIDIA 在此明确反对将客户通用条款和条件应用于购买本文档中引用的 NVIDIA 产品。本文档不直接或间接地形成任何合同义务。
NVIDIA 产品并非设计、授权或保证适用于医疗、军事、航空、航天或生命维持设备,也不适用于 NVIDIA 产品的故障或 malfunction 可以合理预期会导致人身伤害、死亡或财产或环境损害的应用。NVIDIA 对在此类设备或应用中包含和/或使用 NVIDIA 产品不承担任何责任,因此,此类包含和/或使用由客户自行承担风险。
NVIDIA 不保证或声明基于本文档的产品将适用于任何特定用途。NVIDIA 不一定会对每个产品的所有参数进行测试。客户全权负责评估和确定本文档中包含的任何信息的适用性,确保产品适用于并适合客户计划的应用,并为该应用执行必要的测试,以避免应用或产品的故障。客户产品设计中的缺陷可能会影响 NVIDIA 产品的质量和可靠性,并可能导致超出本文档中包含的附加或不同的条件和/或要求。对于可能基于或归因于以下原因的任何故障、损坏、成本或问题,NVIDIA 概不负责:(i) 以任何违反本文档的方式使用 NVIDIA 产品,或 (ii) 客户产品设计。
本文件未授予任何 NVIDIA 专利权、版权或其他 NVIDIA 知识产权的明示或暗示许可。NVIDIA 发布的有关第三方产品或服务的信息不构成 NVIDIA 授予的使用此类产品或服务的许可,也不构成对其的保证或认可。使用此类信息可能需要获得第三方专利或其他知识产权的许可,或获得 NVIDIA 专利或其他知识产权的许可。
只有在事先获得 NVIDIA 书面批准的情况下,才允许复制本文档中的信息,且复制必须未经改动并完全遵守所有适用的出口法律和法规,并附带所有相关的条件、限制和声明。
本文件以及所有 NVIDIA 设计规范、参考板、文件、图纸、诊断程序、列表和其他文档(统称为“材料”,单独称为“材料”)均按“原样”提供。NVIDIA 对这些材料不作任何明示、暗示、法定或其他形式的保证,并明确声明不承担所有关于不侵权、适销性和特定用途适用性的暗示保证。在法律未禁止的范围内,在任何情况下,NVIDIA 均不对因使用本文档而引起的任何损害(包括但不限于任何直接、间接、特殊、附带、惩罚性或后果性损害,无论何种原因造成,也无论基于何种责任理论)承担责任,即使 NVIDIA 已被告知可能发生此类损害。尽管客户可能因任何原因遭受任何损害,NVIDIA 对此处描述产品的累计总责任应根据产品的销售条款进行限制。
15.2. OpenCL
OpenCL 是 Apple Inc. 的商标,Khronos Group Inc. 被许可使用。
15.3. 商标
NVIDIA 和 NVIDIA 徽标是 NVIDIA Corporation 在美国和其他国家/地区的商标或注册商标。其他公司和产品名称可能是与其相关的各自公司的商标。
16. 版权
© 2009-2024 NVIDIA Corporation 及附属公司。保留所有权利。
本产品包含由 Syncro Soft SRL (http://www.sync.ro/) 开发的软件。