NVIDIA CUDA Linux 系统安装指南

Linux系统上CUDA工具包的安装说明。

1. 简介

CUDA® 是由NVIDIA®发明的并行计算平台和编程模型。它通过利用图形处理单元(GPU)的强大能力,显著提升计算性能。

CUDA的开发设定了几个设计目标:

  • 为标准编程语言(如C语言)提供一小部分扩展,使并行算法的实现更加直接。借助CUDA C/C++,程序员可以专注于算法的并行化任务,而无需花费时间在实现细节上。

  • 支持异构计算,应用程序可同时使用CPU和GPU。应用程序的串行部分在CPU上运行,并行部分则卸载到GPU处理。因此,CUDA可以逐步应用于现有应用程序。CPU和GPU被视为拥有各自独立内存空间的分离设备。这种配置还允许CPU和GPU同时进行计算,而不会争用内存资源。

支持CUDA的GPU拥有数百个核心,可共同运行数千个计算线程。这些核心具有共享资源,包括寄存器文件和共享内存。片上共享内存允许在这些核心上运行的并行任务共享数据,而无需通过系统内存总线传输。

本指南将向您展示如何安装并验证CUDA开发工具的正确运行。

注意

NVIDIA驱动程序的安装说明现已移至驱动程序安装指南

1.1. 系统要求

要在您的系统上使用NVIDIA CUDA,需要安装以下组件:

CUDA开发环境高度依赖与主机开发环境的紧密集成,包括主机编译器和C运行时库,因此仅支持已通过此CUDA工具包版本认证的发行版。

下表列出了支持的Linux发行版。请查看表格下方的相关注释。

带有$distro$arch$arch_ext的列可用于替换本文档中相同变量的出现。

表 1 CUDA 12.9中的原生Linux发行版支持

发行版

$distro

$arch

$arch_ext

x86_64

红帽企业版Linux 9

rhel9

x86_64

x86_64

红帽企业版Linux 8

rhel8

x86_64

x86_64

OpenSUSE Leap 15 SP6

opensuse15

x86_64

x86_64

Rocky Linux 9

rhel9

x86_64

x86_64

Rocky Linux 8

rhel8

x86_64

x86_64

SUSE Linux Enterprise Server 15 SP6

sles15

x86_64

x86_64

Ubuntu 24.04 LTS

ubuntu2404

x86_64

amd64

Ubuntu 22.04 LTS

ubuntu2204

x86_64

amd64

Ubuntu 20.04 LTS

ubuntu2004

x86_64

amd64

Debian 12

debian12

x86_64

amd64

Fedora 41

fedora41

x86_64

x86_64

麒麟操作系统 V10 SP3 2403

kylin10

x86_64

x86_64

Azure Linux 2.0 (CBL Mariner 2.0)

cm2

x86_64

x86_64

Azure Linux 3.0

azl3

x86_64

x86_64

Amazon Linux 2023

amzn2023

x86_64

x86_64

Oracle Linux 9

rhel9

x86_64

x86_64

Oracle Linux 8

rhel8

x86_64

x86_64

Ubuntu 24.04 (WSL)

wsl-ubuntu

x86_64

x86_64

arm64-sbsa (通用)

红帽企业版Linux 9

rhel9

sbsa

aarch64

红帽企业版Linux 8

rhel8

sbsa

aarch64

SUSE Linux企业版服务器15 SP6

sles15

sbsa

aarch64

麒麟 V10 SP3 2403

kylin10

sbsa

aarch64

Ubuntu 24.04 LTS

ubuntu2404

sbsa

arm64

Ubuntu 22.04 LTS

ubuntu2204

sbsa

arm64

Ubuntu 20.04 LTS

ubuntu2004

sbsa

arm64

arm64-sbsa (仅限GRACE)

Azure Linux 3.0

azl3

sbsa

aarch64

Amazon Linux 2023

amzn2023

sbsa

aarch64

红帽企业版Linux 9

rhel9

sbsa

aarch64

SUSE Linux企业版服务器15 SP6

sles15

sbsa

aarch64

Ubuntu 24.04 LTS

ubuntu2404

sbsa

arm64

Ubuntu 22.04 LTS

ubuntu2204

sbsa

arm64

arm64-jetson (dGPU)

Ubuntu 22.04 LTS - JetPack 6.x

ubuntu2204

aarch64

arm64

Ubuntu 20.04 LTS - JetPack 5.x

ubuntu2004

aarch64

arm64

arm64-jetson (集成显卡)

Ubuntu 22.04 LTS - JetPack 6.x

ubuntu2204

aarch64

arm64

有关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查阅。

1.2. 操作系统支持策略

对不同操作系统的支持将持续至各操作系统定义的标准EOSS/EOL日期。请参考这些操作系统的支持生命周期以了解其支持时间线,并相应计划迁移至新版本。

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会对主机编译器的主版本号进行检查,因此下表列出的编译器较新的次版本也能获得支持,但主版本号超出范围则不受支持。

表 2 支持的编译器

发行版本

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文档所述配置NVCC_BIN环境变量。

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或并行计算的相关经验。

1.4.1. 管理员权限

  • 普通用户可以执行的命令将在行首以$作为前缀

  • 需要管理员权限(root)的命令会在行首以#作为前缀

本文档中的许多命令可能需要超级用户权限。在大多数Linux发行版上,这将需要您以root身份登录。对于已启用sudo包的系统,请对所有必要命令使用sudo前缀或sudo shell (sudo -i)。

2. 安装前准备

在Linux上安装CUDA Toolkit之前,必须执行一些操作:

  • 验证系统是否具备支持CUDA的GPU。

  • 验证系统正在运行受支持的Linux版本。

  • 验证系统已安装gcc

  • 下载NVIDIA CUDA工具包。

  • 处理冲突的安装方法。

注意

您可以通过使用-override标志运行安装程序来覆盖安装时的先决条件检查。请注意,使用NVIDIA CUDA Toolkit仍然需要满足这些先决条件。

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工具包发布说明中列出。

要确定您正在运行的是哪个发行版和版本号,请在命令行中输入以下内容:

$ hostnamectl

2.3. 验证系统是否已安装gcc

使用CUDA Toolkit进行开发需要gcc编译器。运行CUDA应用程序则不需要该编译器。gcc通常作为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.9.0/docs/sidebar/md5sum.txt上发布的MD5校验和与下载文件的校验和进行比较来验证下载。如果任一校验和不匹配,则下载的文件已损坏,需要重新下载。

要计算下载文件的MD5校验和,请运行以下命令:

md5sum <file>

2.6. 处理安装方法冲突

在安装CUDA之前,应卸载任何可能产生冲突的先前安装。这不会影响之前未安装过CUDA的系统,或保留原有安装方式(RPM/Deb与Runfile)的系统。具体细节请参阅以下图表。

表 3 CUDA工具包安装兼容性矩阵

已安装的工具包版本 == X.Y

已安装的工具包版本 != X.Y

RPM/deb

运行

RPM/deb

运行

安装工具包版本 X.Y

RPM/deb

无需操作

卸载运行

无需操作

无需操作

运行

卸载RPM/deb包

卸载运行

无操作

无操作

使用以下命令卸载Toolkit运行文件安装:

# /usr/local/cuda-X.Y/bin/cuda-uninstaller

使用以下命令卸载RPM/Deb安装包:

红帽企业版Linux、Rocky Linux、Oracle Linux、Fedora、麒麟操作系统、亚马逊Linux:

# dnf remove <package_name>

Azure Linux:

# tdnf remove <package_name>

OpenSUSE Leap, SUSE Linux企业服务器版:

# zypper remove <package_name>

Debian / Ubuntu:

# apt --purge remove <package_name>

3. 包管理器安装

基础操作指南可在快速入门指南中查阅。下文将提供更详细的说明。

3.1. 概述

使用RPM或Debian软件包安装会与系统的软件包管理系统交互。当使用RPM或Debian本地仓库安装程序时,下载的软件包包含存储在本地文件系统/var/中的仓库快照。此类软件包仅告知软件包管理器在哪里可以找到实际的安装包,但不会安装它们。

如果启用了在线网络仓库,安装时将使用包管理器(如apt-get、dnf、tdnf或zypper)自动下载RPM或Debian软件包。

特定发行版的安装说明详细介绍了如何安装CUDA:

最后,详细介绍了一些有用的包管理器功能

这些说明仅适用于原生开发。如需进行跨平台开发,请参阅CUDA跨平台环境章节。

注意

可选组件如nvidia-fslibnvidia-nscqfabricmanager默认不安装,需要时需单独安装。

3.2. 红帽企业版Linux / Rocky Linux / Oracle Linux

3.2.1. 准备工作

  1. 执行预安装操作

  2. 通过启用可选仓库来满足第三方软件包的依赖关系:

    • 红帽企业版Linux 9:

      # subscription-manager repos --enable=rhel-9-for-$arch-appstream-rpms
      # subscription-manager repos --enable=rhel-9-for-$arch-baseos-rpms
      # subscription-manager repos --enable=codeready-builder-for-rhel-9-$arch-rpms
      
    • 红帽企业版Linux 8:

      # subscription-manager repos --enable=rhel-8-for-$arch-appstream-rpms
      # subscription-manager repos --enable=rhel-8-for-$arch-baseos-rpms
      # subscription-manager repos --enable=codeready-builder-for-rhel-8-$arch-rpms
      
    • Rocky Linux 9:

      # dnf config-manager --set-enabled crb
      
    • Rocky Linux 8:

      # dnf config-manager --set-enabled powertools
      
    • Oracle Linux 9:

      # dnf config-manager --set-enabled ol9_codeready_builder
      
    • Oracle Linux 8:

      # dnf config-manager --set-enabled ol8_codeready_builder
      
  3. 选择安装方式:本地仓库安装网络仓库安装

3.2.2. 本地仓库安装

在文件系统上安装本地仓库:

# rpm --install cuda-repo-<distro>-X-Y-local-<version>*.<arch>.rpm

3.2.3. 网络仓库安装

启用网络仓库:

# dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-<distro>.repo

3.2.4. 通用指令

这些说明适用于本地和网络安装。

  1. 安装CUDA SDK:

    # dnf install cuda-toolkit
    
  2. 安装GPUDirect文件系统:

    # dnf install nvidia-gds
    
  3. 重启系统:

    # reboot
    
  4. 执行安装后操作

3.3. 麒麟操作系统

3.3.1. 准备工作

  1. 执行预安装操作

  2. 选择安装方式:本地仓库安装网络仓库安装

3.3.2. 本地仓库安装

在文件系统上安装本地仓库:

# rpm --install cuda-repo-<distro>-X-Y-local-<version>*.<arch>.rpm

3.3.3. 网络仓库安装

启用网络仓库:

# dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-<distro>.repo

3.3.4. 通用指令

这些说明适用于本地和网络安装。

  1. 安装CUDA SDK:

    # dnf install cuda-toolkit
    
  2. 安装GPUDirect文件系统:

    # dnf install nvidia-gds
    
  3. 重启系统:

    # reboot
    
  4. 执行安装后操作

3.4. Fedora

3.4.1. 准备工作

  1. 执行预安装操作

  2. 选择安装方式:本地仓库安装网络仓库安装

3.4.2. 本地仓库安装

在文件系统上安装本地仓库:

# rpm --install cuda-repo-<distro>-X-Y-local-<version>*.x86_64.rpm

3.4.3. 网络仓库安装

启用网络仓库:

# dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/x86_64/cuda-<distro>.repo

3.4.4. 通用安装说明

这些说明适用于Fedora的本地和网络安装。

  1. 安装CUDA SDK:

    # dnf install cuda-toolkit
    
  2. 重启系统:

    # reboot
    
  3. 执行安装后操作

3.4.5. Fedora的GCC兼容性包

Fedora支持的版本可能搭载了比NVCC实际支持更新的编译器。这可以通过安装GCC兼容包并设置一些环境变量来解决。

例如,Fedora 41系统预装了GCC 14以及兼容的GCC 13版本,后者可用于NVCC。要安装并配置本地NVCC二进制文件以使用该版本,请按以下步骤操作。

  1. 安装所需软件包:

    # dnf install gcc13-c++
    

    安装完成后,系统上会出现以下二进制文件:

    /usr/bin/gcc-13
    /usr/bin/g++-13
    
  2. 覆盖默认的g++编译器。请参阅NVCC关于环境变量的文档。例如:

    $ export NVCC_CCBIN='g++-13'
    

3.5. SUSE Linux Enterprise Server

3.5.1. 准备工作

  1. 执行预安装操作

  2. 选择安装方式:本地仓库安装网络仓库安装

3.5.2. 本地仓库安装

在文件系统上安装本地仓库:

# rpm --install cuda-repo-<distro>-X-Y-local-<version>*.<arch>.rpm

3.5.3. 网络仓库安装

  1. 启用网络仓库:

    # zypper addrepo https://developer.download.nvidia.com/compute/cuda/repos///cuda-.repo
    
  2. 刷新Zypper软件仓库缓存:

    # SUSEConnect --product PackageHub//
    # zypper refresh
    

3.5.4. 通用安装指南

这些说明适用于SUSE Linux Enterprise Server的本地和网络安装。

  1. 安装CUDA SDK:

    # zypper install cuda-toolkit
    
  2. 重启系统:

    # reboot
    
  3. 执行安装后操作

3.6. OpenSUSE Leap

3.6.1. 准备工作

  1. 执行预安装操作

  2. 选择安装方式:本地仓库安装网络仓库安装

3.6.2. 本地仓库安装

在文件系统上安装本地仓库:

# rpm --install cuda-repo-<distro>-X-Y-local-<version>*.x86_64.rpm

3.6.3. 网络仓库安装

  1. 启用网络仓库:

    # zypper addrepo https://developer.download.nvidia.com/compute/cuda/repos//x86_64/cuda-.repo
    
  2. 刷新 Zypper 软件仓库缓存:

    # zypper refresh
    

3.6.4. 通用安装指南

这些说明适用于OpenSUSE Leap的本地和网络安装。

  1. 安装CUDA SDK:

    # zypper install cuda-toolkit
    
  2. 重启系统:

    # reboot
    
  3. 执行安装后操作

3.7. 适用于Linux的Windows子系统

如果您在WSL环境中安装,必须使用这些说明。

3.7.1. 准备工作

  1. 执行预安装操作

  2. 选择安装方式:本地仓库安装网络仓库安装

3.7.2. 本地仓库安装

  1. 在文件系统上安装本地仓库:

    # dpkg -i cuda-repo--X-Y-local_*_amd64.deb
    
  2. 注册临时公共GPG密钥:

    # cp /var/cuda-repo--X-Y-local/cuda-*-keyring.gpg /usr/share/keyrings/
    
  3. 添加pin文件以优先使用CUDA仓库:

    $ wget https://developer.download.nvidia.com/compute/cuda/repos//x86_64/cuda-.pin
    # mv cuda-.pin /etc/apt/preferences.d/cuda-repository-pin-600
    

3.7.3. 网络仓库安装

安装cuda-keyring包:

$ wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/x86_64/cuda-keyring_1.1-1_all.deb
# dpkg -i cuda-keyring_1.1-1_all.deb

3.7.4. 通用安装指南

这些说明适用于WSL的本地和网络安装。

  1. 更新Apt软件源缓存:

    # apt update
    
  2. 安装CUDA SDK:

    # apt install cuda-toolkit
    
  3. 执行安装后操作

3.8. Ubuntu

3.8.1. 准备Ubuntu系统

  1. 执行预安装操作

  2. 选择安装方式:本地仓库安装网络仓库安装

3.8.2. 本地仓库安装

  1. 在文件系统上安装本地仓库:

    # dpkg -i cuda-repo--X-Y-local_*_.deb
    
  2. 注册临时公共GPG密钥:

    # cp /var/cuda-repo--X-Y-local/cuda-*-keyring.gpg /usr/share/keyrings/
    
  3. 添加pin文件以优先使用CUDA仓库:

    $ wget https://developer.download.nvidia.com/compute/cuda/repos///cuda-.pin
    # mv cuda-.pin /etc/apt/preferences.d/cuda-repository-pin-600
    

3.8.3. 网络仓库安装

安装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
# dpkg -i cuda-keyring_1.1-1_all.deb

3.8.4. 通用安装指南

这些说明适用于Ubuntu的本地和网络安装。

  1. 更新APT软件源缓存:

    # apt update
    
  2. 安装CUDA SDK:

    注意

    这两个命令必须分别执行。

    # apt install cuda-toolkit
    

    要包含所有GDS软件包:

    # apt install nvidia-gds
    

    对于原生arm64-jetson仓库,需安装额外软件包:

    # apt install cuda-compat
    
  3. 重启系统:

    # reboot
    
  4. 执行安装后操作

3.9. Debian

3.9.1. 准备工作

  1. 执行预安装操作

  2. 启用 contrib 软件仓库:

    # add-apt-repository contrib
    
  3. 选择安装方式:本地仓库安装网络仓库安装

3.9.2. 本地仓库安装

  1. 在文件系统上安装本地仓库:

    # dpkg -i cuda-repo--X-Y-local_*_amd64.deb
    
  2. 注册公共GPG密钥:

    # cp /var/cuda-repo--X-Y-local/cuda-*-keyring.gpg /usr/share/keyrings/
    

3.9.3. 网络仓库安装

安装cuda-keyring包:

$ wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/<arch>/cuda-keyring_1.1-1_all.deb
# dpkg -i cuda-keyring_1.1-1_all.deb

3.9.4. 通用安装说明

这些说明适用于Debian的本地和网络安装。

  1. 更新APT软件仓库缓存:

    # apt update
    
  2. 安装CUDA SDK:

    # apt install cuda-toolkit
    
  3. 重启系统:

    # reboot
    
  4. 执行安装后操作

3.10. 亚马逊Linux

3.10.1. 准备Amazon Linux

  1. 执行预安装操作

  2. 选择安装方式:本地仓库安装网络仓库安装

3.10.2. 本地仓库安装

在文件系统上安装本地仓库:

# rpm --install cuda-repo-<distro>-X-Y-local-<version>*.x86_64.rpm

3.10.3. 网络仓库安装

启用网络仓库:

# dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/<distro>/x86_64/cuda-<distro>.repo

3.10.4. 通用安装说明

这些说明适用于Amazon Linux的本地和网络安装。

  1. 安装CUDA SDK:

    # dnf install cuda-toolkit
    
  2. 安装GPUDirect文件系统:

    # dnf install nvidia-gds
    
  3. 重启系统:

    # reboot
    
  4. 执行安装后操作

3.11. Azure Linux

3.11.1. 准备Azure Linux环境

  1. 执行预安装操作

  2. 选择安装方式:本地仓库安装网络仓库安装

3.11.2. 本地仓库安装

在文件系统上安装本地仓库:

# rpm --install cuda-repo-<distro>-X-Y-local-<version>*.x86_64.rpm

3.11.3. 网络仓库安装

启用网络仓库:

# curl https://developer.download.nvidia.com/compute/cuda/repos/<distro>/x86_64/cuda-<distro>.repo -o /etc/yum.repos.d/cuda-<distro>.repo

3.11.4. 通用安装说明

这些说明适用于Azure Linux的本地和网络安装。

  1. 启用扩展仓库:

    Azure Linux 2 (CBL Mariner 2.0):

    # tdnf install mariner-repos-extended
    

    Azure Linux 3:

    # tdnf install azurelinux-repos-extended
    
  2. 安装Cuda SDK:

    # tdnf install cuda-toolkit
    
  3. 安装GPUDirect文件系统:

    # tdnf install nvidia-gds
    
  4. 重启系统:

    # reboot
    
  5. 执行安装后操作

3.12. 附加包管理器功能

以下是用户可以利用的包管理器的一些额外功能。

3.12.1. 可用软件包

推荐的安装包是cuda-toolkit包。该软件包将安装本地开发所需的全套其他CUDA组件,应能满足大多数使用场景。其中包括编译器、调试器、性能分析器、数学库等。对于x86_64平台,还包含Nsight Eclipse Edition和可视化性能分析工具。

在支持的平台上,cuda-cross-aarch64cuda-cross-sbsa软件包分别安装所有针对arm64-jetson和SBSA进行跨平台开发所需的软件包。

注意

从CUDA 12.0及更高版本的工具包中移除了32位编译(原生和交叉编译)。如需进行32位编译,请使用早期版本的CUDA工具包。Hopper架构不支持32位应用程序。

上述安装的软件包也可以通过明确指定名称单独安装。可用软件包列表可通过以下方式获取:

Amazon Linux / Fedora / 麒麟操作系统 / Red Hat Enterprise Linux / Rocky Linux / Oracle Linux:

# dnf --disablerepo="*" --enablerepo="cuda*" list

Azure Linux:

# tdnf --disablerepo="*" --enablerepo="cuda-cm2-<cuda X-Y version>-local" list

SUSE Linux企业服务器 / openSUSE Leap:

# zypper packages -r cuda

Debian / Ubuntu:

# cat /var/lib/apt/lists/*cuda*Packages | grep "Package:"

3.12.2. 元数据包

元包是RPM/Deb/Conda格式的软件包,它们不包含(或仅包含少量)文件,但具有多个依赖项。当您可能不了解所需软件包的具体细节时,可以使用这些元包来安装多个CUDA软件包。下表列出了这些元包。

表 4 适用于CUDA 12.9的元软件包

元数据包

用途

cuda

安装所有CUDA Toolkit驱动程序包,提供完整的桌面体验。当新版本的cuda包发布时,也会自动安装。

cuda-12-9

安装指定版本的所有CUDA工具包驱动程序包,直到安装了其他版本的CUDA为止。

cuda-toolkit

安装所有CUDA Toolkit软件包,提供完整的桌面体验。当下一版本的cuda-toolkit软件包发布时,也会自动安装。

cuda-toolkit-12

安装所有CUDA Toolkit软件包,提供完整的桌面体验。不会升级超过12.x系列工具包。

cuda-toolkit-12

安装指定版本的所有CUDA Toolkit软件包,提供完整的桌面体验,直到安装其他版本的CUDA为止。

cuda-tools-12-9

安装所有CUDA命令行和可视化工具。不会升级超过12.x系列工具包。

cuda-runtime-12-9

安装运行CUDA应用程序所需的所有CUDA工具包组件以及驱动程序,不包含任何桌面组件。专为计算节点设计

cuda-compiler-12-9

安装所有CUDA编译器包。

cuda-libraries-12-9

安装所有运行时CUDA库包。

cuda-libraries-dev-12-9

安装所有开发用的CUDA库包。

3.12.3. 软件包升级

cuda 软件包指向 CUDA 工具包的最新稳定版本。当有新版本可用时,使用以下命令升级工具包:

3.12.3.1. 亚马逊Linux

# dnf upgrade cuda-toolkit

3.12.3.2. Fedora

将工具包升级到新的主要分支时:

# dnf install cuda-toolkit

将工具包升级到新的次要分支时:

# dnf upgrade cuda-toolkit

3.12.3.3. 麒麟操作系统 / 红帽企业版Linux / Rocky Linux / Oracle Linux

# dnf install cuda-toolkit

3.12.3.4. Azure Linux

# tdnf install cuda-toolkit

3.12.3.5. OpenSUSE / SUSE Linux企业服务器

# zypper install cuda-toolkit

3.12.3.6. Debian / Ubuntu 系统

# apt install cuda-toolkit

3.12.3.7. 其他软件包说明

cuda-cross- 包也可以采用同样的方式进行升级。

为避免任何自动升级,并将工具包安装锁定在X.Y版本,请安装cuda-toolkit-X-Ycuda-cross--X-Y软件包。

支持并行安装。如元数据包部分所述,根据软件包的不同,您可以避免升级或自动获取新版本安装。

4. 驱动安装

有关驱动程序安装的更多信息,请参阅Linux驱动程序安装指南

5. 运行文件安装

基础操作指南可在快速入门指南中查阅。下文将提供更详细的说明。

本节介绍使用独立安装程序时CUDA的安装和配置。独立安装程序是一个.run文件,完全自包含。

5.1. 运行文件概述

Runfile安装方式通过基于ncurses的交互式界面安装CUDA工具包。

以下列出了安装步骤

最后,安装程序的高级选项卸载步骤将在下面详细说明。

Runfile安装方式不支持跨平台开发。如需进行跨平台开发,请参阅CUDA跨平台环境章节。

5.2. 安装

  1. 执行预安装操作

  2. 重启进入文本模式(运行级别3)。

    通常可以通过在系统内核启动参数末尾添加数字“3”来实现。

    由于尚未安装NVIDIA驱动程序,文本终端可能无法正确显示。临时在系统内核启动参数中添加"nomodeset"可能解决此问题。

    请查阅系统引导加载程序的文档以了解如何修改上述启动参数。

  3. 运行安装程序并按照屏幕上的提示操作:

    # sh cuda_<version>_linux.run
    

    安装程序将提示输入以下内容:

    • 最终用户许可协议接受

    • CUDA Toolkit 安装路径及符号链接 /usr/local/cuda

    工具包的默认安装路径是 /usr/local/cuda-12.9:

    /usr/local/cuda 符号链接指向 CUDA 工具包的安装位置。该链接允许项目使用最新的 CUDA 工具包而无需更新任何配置文件。

    The installer must be executed with sufficient privileges to perform some actions. When the current privileges are insufficient to perform an action, the installer will ask for the user’s password to attempt to install with root privileges. Actions that cause the installer to attempt to install with root privileges are:

    • 将CUDA工具包安装到用户没有写入权限的位置

    • 创建/usr/local/cuda符号链接

    如上所示,使用sudo运行安装程序将获得安装到需要root权限目录的权限。使用sudo运行安装程序时创建的目录和文件将具有root所有权。

  4. 重启系统以重新加载图形界面:

    # reboot
    
  5. 执行安装后操作

5.3. 高级选项

操作

使用的选项

说明

静默安装

--silent

静默安装的必要选项。根据下方提供的选项执行安装,无需用户进一步输入且命令行输出最少。静默安装适用于编写CUDA安装脚本。使用此选项即表示接受最终用户许可协议(EULA)。以下标志可用于自定义安装过程中执行的操作。如果以非root权限运行,则必须至少传递--driver--uninstall--toolkit中的一个参数。

--driver

安装CUDA驱动程序。

--工具包

安装CUDA工具包。

--toolkitpath=<路径>

将CUDA Toolkit安装到目录。如果未指定路径,则默认使用/usr/local/cuda-12.9路径。

--defaultroot=<路径>

将库安装到目录。如果未提供,则使用您发行版的默认路径。这仅适用于安装在CUDA Toolkit路径之外的库。

提取

--extract=

提取到的内容包括:驱动程序运行文件,工具包的原始文件将被提取到

当用户希望通过驱动程序安装程序提供的命令行选项(这些选项未在本安装程序中公开)来安装驱动程序时,这尤其有用。

覆盖安装检查

--override

忽略编译器、第三方库和工具包的检测检查,这些检查可能会阻止CUDA工具包的安装。

缺少OpenGL库

--no-opengl-libs

阻止驱动程序安装NVIDIA的GL库。适用于显示由非NVIDIA GPU驱动的系统。在此类系统中,NVIDIA的GL库可能会阻止X正常加载。

没有手册页

--no-man-page

不要将手册页安装在 /usr/share/man 目录下。

覆盖内核源代码

--kernel-source-path=

指示驱动程序安装时使用作为构建NVIDIA内核模块时的内核源代码目录。对于内核源代码安装到非标准位置的系统,此选项是必需的。

运行nvidia-xconfig

--运行NVIDIA X配置

告知驱动程序安装程序运行nvidia-xconfig以更新系统X配置文件,从而使用NVIDIA X驱动程序。现有的X配置文件将被备份。

未检测到nvidia-drm内核模块

--no-drm

不要安装nvidia-drm内核模块。此选项仅应用于解决在不需要提供功能的系统上构建或安装nvidia-drm内核模块失败的情况。

自定义临时目录选择

--tmpdir=<路径>

路径下执行所有临时操作,而非/tmp目录。当/tmp目录不可用时(不存在、已满、以'noexec'方式挂载等情况),此功能非常有用。

内核模块构建目录

--kernel-module-build-directory=

指示驱动程序安装时在构建NVIDIA内核模块时使用传统或开源风格的内核源代码。kernel-open风格仅支持图灵架构及更新的GPU。

-m=kernel

指示驱动程序安装时在构建NVIDIA内核模块时使用旧版风格的内核源代码。这是--kernel-module-build-directory=kernel的简写形式。

m=kernel-open

指示驱动程序安装时在构建NVIDIA内核模块时使用开放版本的内核源代码。kernel-open版本仅支持图灵架构及更新的GPU。这是--kernel-module-build-directory=kernel-open的简写形式

显示安装程序选项

--help

将命令行选项列表打印到标准输出(stdout)。

5.4. 卸载

要卸载CUDA Toolkit,请运行工具包bin目录中提供的卸载脚本。默认情况下,它位于/usr/local/cuda-12.9/bin

# /usr/local/cuda-12.9/bin/cuda-uninstaller

6. Conda安装指南

本节介绍使用Conda安装程序时CUDA的安装与配置。Conda包可在https://anaconda.org/nvidia获取。

6.1. Conda概述

Conda安装会安装CUDA工具包。以下是安装步骤。

6.2. 使用Conda安装CUDA

要使用Conda执行CUDA Toolkit所有组件的基础安装,请运行以下命令:

$ conda install cuda -c nvidia

注意

将CUDA安装在专用的Conda环境中,而非基础环境,以避免安装问题。

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 轮包

NVIDIA提供了通过pip安装CUDA的Python Wheels,主要用于在Python中使用CUDA。这些软件包旨在运行时使用,目前不包含开发工具(这些工具可以单独安装)。

请注意,采用此安装方式时,CUDA的安装环境是通过pip管理的,必须额外注意配置主机环境以便在pip环境之外使用CUDA。

7.1. 先决条件

要安装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.org/simple

7.2. 流程

安装CUDA运行时包:

$ python3 -m pip install nvidia-cuda-runtime-cu12

可选地,使用以下命令安装下面列出的额外软件包:

$ python3 -m pip install nvidia-<library>

7.3. 元包

以下元包将在Linux上为指定的CUDA版本安装对应组件的最新版本。"cu12"应理解为"cuda12"。

  • nvidia-cublas-cu12

  • nvidia-cuda-cccl-cu12

  • nvidia-cuda-cupti-cu12

  • nvidia-cuda-nvcc-cu12

  • nvidia-cuda-nvrtc-cu12

  • nvidia-cuda-opencl-cu12

  • nvidia-cuda-runtime-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-cublas-cu129

  • nvidia-cuda-cccl-cu129

  • nvidia-cuda-cupti-cu129

  • nvidia-cuda-nvcc-cu129

  • nvidia-cuda-nvrtc-cu129

  • nvidia-cuda-opencl-cu129

  • nvidia-cuda-runtime-cu129

  • nvidia-cuda-sanitizer-api-cu129

  • nvidia-cufft-cu129

  • nvidia-curand-cu129

  • nvidia-cusolver-cu129

  • nvidia-cusparse-cu129

  • nvidia-npp-cu129

  • nvidia-nvfatbin-cu129

  • nvidia-nvjitlink-cu129

  • nvidia-nvjpeg-cu129

  • nvidia-nvml-dev-cu129

  • nvidia-nvtx-cu129

8. CUDA 跨平台环境

针对arm64-sbsa的交叉开发支持以下操作系统:Ubuntu 20.04、Ubuntu 22.04、Ubuntu 24.04、麒麟OS 10、红帽企业版Linux 8、红帽企业版Linux 9以及SUSE Linux企业版服务器15。

针对arm64-jetson的交叉开发仅支持在Ubuntu 22.04系统上进行。

我们建议选择与支持的跨目标环境相匹配的主机开发环境。这一选择有助于避免可能出现的主机/目标不兼容问题,例如gccglibc版本不匹配。

8.1. CUDA 跨平台安装指南

以下部分步骤可能已在原生安装章节中完成,这些步骤可以安全跳过。

这些步骤应在x86_64主机系统上执行,而非目标系统。若要在目标系统上安装原生CUDA Toolkit,请参阅包管理器安装中的原生安装部分。

8.1.1. Ubuntu

  1. 执行预安装操作

  2. 选择安装方式:本地跨仓库安装网络跨仓库安装

8.1.1.1. 本地跨仓库安装

  1. 使用以下命令安装仓库元数据包:

# dpkg -i cuda-repo-cross-<arch>-<distro>-X-Y-local-<version>*_all.deb

8.1.1.2. 跨仓库网络安装

  1. 安装 cuda-keyring 包:

$ wget https://developer.download.nvidia.com/compute/cuda/repos/<distro>/cross-linux-<arch>/cuda-keyring_1.1-1_all.deb
# dpkg -i cuda-keyring_1.1-1_all.deb

8.1.1.3. 通用安装指南

  1. 更新APT软件仓库缓存:

# apt update
  1. 安装适用于跨平台的CUDA工具包:

    1. 对于 arm64-sbsa 架构:

      # apt install cuda-cross-sbsa
      
    2. 对于 arm64-jetson:

      # apt install cuda-cross-aarch64
      
    3. 对于QNX系统:

      # apt install cuda-cross-qnx
      
  2. 执行安装后操作

8.1.2. 红帽企业版Linux / Rocky Linux / Oracle Linux

  1. 执行预安装操作

  2. 选择安装方式:本地跨仓库安装网络跨仓库安装

8.1.2.1. 本地跨仓库安装

  1. 使用以下命令安装仓库元数据包:

    # rpm -i cuda-repo-cross---X-Y-local-*.noarch.rpm
    

8.1.2.2. 跨仓库网络安装

  1. 启用网络仓库:

    # dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos//cross-linux-/cuda--cross-linux-sbsa.repo
    

8.1.2.3. 通用安装指南

  1. 安装CUDA SDK:

    # dnf install cuda-cross-sbsa
    

8.1.3. SUSE Linux企业服务器

  1. 执行预安装操作

  2. 选择安装方式:本地跨仓库安装网络跨仓库安装

8.1.3.1. 本地跨仓库安装

  1. 使用以下命令安装仓库元数据包:

    # rpm -i cuda-repo-cross---X-Y-local-*.noarch.rpm
    

8.1.3.2. 跨仓库网络安装

  1. 启用网络仓库:

    # zypper addrepo https://developer.download.nvidia.com/compute/cuda/repos///cuda--cross-linux-sbsa.repo
    

8.1.3.3. 通用安装说明

  1. 刷新 Zypper 软件仓库缓存:

    # zypper refresh
    
  2. 安装CUDA SDK:

    # zypper install cuda-cross-sbsa
    

9. 压缩包与Zip归档交付文件

为了满足日益增长的客户群体对替代安装包格式的需求,同时也为了向社区CI/CD系统提供输入方式,我们为每个组件提供了tarball和zip压缩包。

这些tarball和zip压缩包,被称为二进制归档文件,可在https://developer.download.nvidia.com/compute/cuda/redist/获取。

_images/tarball-archives.png

这些组件的.tar.xz和.zip二进制归档文件不会取代现有的.deb、.rpm、runfile、conda等软件包,也不适合普通用户使用,因为它们不是安装程序。不过这种标准化方法将取代现有的.txz归档文件。

对于每个版本,都会提供一个JSON清单文件,例如redistrib_11.4.2.json,该文件对应CUDA 11.4.2版本标签(CUDA 11.4更新2),其中包含发布日期、每个组件的名称、许可证名称、各平台的相对URL以及校验和。

建议软件包维护者在重新分发前检查每个组件提供的许可证。下一节将为使用CMake和Bazel构建系统的开发者提供指导说明。

9.1. 解析Redistrib JSON

以下JSON清单示例包含每个组件的键:名称、许可证、版本,以及一个平台数组,其中包含每个归档文件的相对路径、sha256、md5和大小(字节)。

{
    "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获取。

一个解析这些JSON清单的示例脚本可在GitHub上获取:

  • 下载每个存档

  • 验证SHA256校验和

  • 解压归档文件

  • 展平为折叠的目录结构

表5 可用的Tarball和Zip压缩包

产品

示例

CUDA Toolkit

./parse_redist.py --product cuda --label 12.9.0

cuBLASMp

./parse_redist.py --product cublasmp --label 0.2.1

cuDNN

./parse_redist.py --product cudnn --label 9.2.1

cuDSS

./parse_redist.py --product cudss --label 0.3.0

cuQuantum

./parse_redist.py --product cuquantum --label 24.03.0

cuSPARSELt

./parse_redist.py --product cusparselt --label 0.6.2

cuTENSOR

./parse_redist.py --product cutensor --label 2.0.2.1

NVIDIA driver

./parse_redist.py --product nvidia-driver --label 550.90.07

nvJPEG2000

./parse_redist.py --product nvjpeg2000 --label 0.7.5

NVPL

./parse_redist.py --product nvpl --label 24.7

nvTIFF

./parse_redist.py --product nvtiff --label 0.3.0

9.2. 将Tarballs导入CMake

推荐将这些压缩包导入CMake构建系统的方式是通过FindCUDAToolkit模块(3.17及以上版本)。

注意

FindCUDA模块已弃用。

提取位置的路径可以通过环境变量CUDAToolkit_ROOT来指定。例如CMakeLists.txt和命令,请参阅cmake/1_FindCUDAToolkit/

对于旧版本的CMake,ExternalProject_Add模块是一种替代方法。例如CMakeLists.txt文件和命令,请参阅cmake/2_ExternalProject/

9.3. 将Tarballs导入Bazel

推荐将这些tarball导入Bazel构建系统的方法是使用http_archivepkg_tar

例如,请参阅 bazel/1_pkg_tar/

10. 安装后操作

安装后必须手动执行相关操作。这些操作分为必选、推荐和可选部分。

10.1. 必选操作

在安装完成后,必须采取一些操作才能使用CUDA工具包。

10.1.1. 环境设置

PATH 变量需要包含 export PATH=/usr/local/cuda-12.9/bin${PATH:+:${PATH}}。Nsight Compute 已迁移至 /opt/nvidia/nsight-compute/,但仅适用于 rpm/deb 安装方式。若使用 .run 安装程序,它仍位于 /usr/local/cuda-12.9/ 目录下。

将此路径添加到PATH变量中:

$ export PATH=${PATH}:/usr/local/cuda-12.9/bin

此外,当使用runfile安装方法时,在64位系统上LD_LIBRARY_PATH变量需要包含/usr/local/cuda-12.9/lib64,而对于32位兼容性则需要包含/usr/local/cuda-12.9/lib

$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-12.9/lib64

请注意,当使用自定义安装路径配合runfile安装方法时,上述路径会发生变化。

10.3. 可选操作

其他选项并非使用CUDA工具包所必需,但可用于提供额外功能。

10.3.1. 安装第三方库

部分CUDA示例程序使用了第三方库,这些库可能未默认安装在您的系统中。在构建时,这些示例会尝试检测所需的库。

如果未检测到某个库,系统会自动跳过并提示缺少哪个库。要构建和运行这些示例,您必须安装缺失的库。如果这些依赖项未安装,请按照以下说明操作。

Amazon Linux / Fedora / 麒麟操作系统 / RHEL / Rocky Linux / Oracle Linux

# dnf install freeglut-devel libX11-devel libXi-devel libXmu-devel make mesa-libGLU-devel freeimage-devel libglfw3-devel

SLES

# zypper install libglut3 libX11-devel libXi6 libXmu6 libGLU1 make

OpenSUSE

# zypper install freeglut-devel libX11-devel libXi-devel libXmu-devel make Mesa-libGL-devel freeimage-devel

Debian / Ubuntu

# 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源代码

使用runfile安装方法时,必须明确选择安装cuda-gdb源代码。在安装过程中,在组件选择页面,展开"CUDATools12.8"组件并勾选cuda-gdb-src进行安装。该选项默认未勾选。

要通过RPM和Debian安装方法获取cuda-gdb的源代码,必须安装cuda-gdb-src软件包。

源代码以压缩包形式安装在/usr/local/cuda-12.8/extras目录中。

10.3.3. 选择CUDA的活跃版本

对于依赖符号链接/usr/local/cuda/usr/local/cuda-MAJOR的应用程序,您可能希望使用提供的alternatives工具切换到已安装的其他CUDA版本。

显示当前激活的CUDA版本及所有可用版本:

$ update-alternatives --display cuda

显示指定主要CUDA发行版的活跃次要版本:

$ update-alternatives --display cuda-12

要更新CUDA的活动版本:

# update-alternatives --config cuda

11. 卸载CUDA工具包

按照以下步骤从系统中正确卸载CUDA工具包。这些步骤将确保卸载过程干净彻底。

Amazon Linux / Fedora / 麒麟操作系统 / Red Hat Enterprise Linux / Rocky Linux / Oracle Linux:

# dnf remove "cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"

Azure Linux:

# tdnf remove "cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"

然后清理卸载残留:

# tdnf autoremove

OpenSUSE / SUSE Linux 企业服务器:

# zypper remove "cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"

Debian / Ubuntu:

# apt remove --purge "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"

然后清理卸载残留:

# apt autoremove --purge

12. 高级设置

以下是一些高级设置场景的相关信息,这些内容未包含在上述基础指南中。

表 6 安装CUDA时的高级设置场景

场景

操作说明

安装GPUDirect存储

参考安装GPUDirect存储

GDS支持两种不同模式:

  • GDS(默认/全性能模式)

  • 兼容模式

它们的安装说明略有不同。由于软件依赖限制,兼容模式是某些发行版唯一支持的模式。

完整的GDS支持仅限于以下Linux发行版:

  • Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04

  • RHEL 8.y (y <= 10), RHEL 9.y (y <= 5)

使用包管理器安装方法将CUDA安装到特定目录。

RPM

RPM软件包不支持通过包管理器(Yum和Zypper)自定义安装位置,但可以使用rpm的--relocate参数将RPM软件包安装到自定义位置:

sudo rpm --install --relocate /usr/local/cuda-12.9=/new/toolkit package.rpm

您需要按照正确的依赖顺序安装软件包;这一任务通常由软件包管理器处理。例如,如果软件包"foo"依赖于软件包"bar",您应该先安装"bar",再安装"foo"。您可以通过以下方式检查RPM软件包的依赖关系:

rpm -qRp package.rpm

请注意,驱动程序包无法重新定位。

deb

Deb软件包不支持自定义安装位置。但可以提取Deb软件包的内容并将文件移动到所需的安装位置。有关提取Deb软件包的更多详细信息,请参阅下一个场景。

解压安装程序的内容。

运行文件

可以通过使用--extract参数将Runfile提取为独立的Toolkit Runfiles。通过运行以下命令可以进一步提取Toolkit独立Runfiles:

./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”错误时,这非常有用。

每个需要限制到特定架构的软件仓库都必须修改其sources.list条目。这需要通过修改/etc/apt/sources.list文件以及/etc/apt/sources.list.d/目录下包含您想限制的仓库的任何文件来完成。通常只需修改/etc/apt/sources.list中的条目就足够了

一个架构受限的仓库条目如下所示:

deb [arch=<arch1>,<arch2>] <url>

例如,如果您想将仓库限制为仅支持amd64和i386架构,配置将如下所示:

deb [arch=amd64,i386] <url>

没有必要限制deb-src软件源,因为这些软件源不提供特定架构的软件包。

更多详情,请参阅sources.list手册页。

The runfile installer fails to extract due to limited space in the TMP directory.

这种情况可能发生在TMP目录(通常是/tmp)存储空间有限的系统上,或者使用内存中的tmpfs处理临时存储的系统上。此时,应使用--tmpdir命令行选项来指定运行文件使用具有足够空间进行解压的目录。有关此选项的更多信息,请参阅Advanced Options

如果出现错误:E: Failed to fetch file:/var/cuda-repo File not found

Debian 和 Ubuntu

这可能在卸载旧版本CUDA后安装新版本时发生。请在安装前使用以下命令:

sudo rm -v /var/lib/apt/lists/*cuda* /var/lib/apt/lists/*nvidia*

Debian和Ubuntu上的详细安装指南

使用 --verbose-versions 标志,例如:

sudo apt-get install --verbose-versions cuda

13. 其他注意事项

现在您已安装支持CUDA的硬件和NVIDIA CUDA工具包,可以查看并体验众多内置程序。要开始使用CUDA加速您自己的应用程序性能,请参阅位于/usr/local/cuda-12.8/doc目录中的《CUDA C++编程指南》。

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安装程序在交互式安装过程中会询问您希望将Toolkit安装到哪个位置。如果使用非交互式安装,您可以使用--toolkitpath参数来更改安装位置:

# ./runfile.run --silent --toolkit --toolkitpath=/my/new/toolkit

RPM和Deb软件包无法直接使用包管理器安装到自定义位置。更多信息请参阅高级设置章节中的"使用包管理器安装方法将CUDA安装到特定目录"场景。

14.2. 为什么在尝试构建CUDA应用时会出现“nvcc: 没有这样的文件或目录”错误?

您的PATH环境变量设置不正确。请确保PATH包含您安装Toolkit的bin目录,通常为/usr/local/cuda-12.8/bin

$ export PATH=/usr/local/cuda-12.9/bin${PATH:+:${PATH}}

14.3. 为什么当我尝试运行使用CUDA库的CUDA应用程序时,会看到"加载共享库时出错:<库名称>:无法打开共享对象文件:没有这样的文件或目录"?

您的LD_LIBRARY_PATH环境变量设置不正确。请确保LD_LIBRARY_PATH包含您安装Toolkit的lib和/或lib64目录,通常为/usr/local/cuda-12.8/lib{,64}

$ export LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib ${LD_LIBRARY_PATH:+:${LD_LIBRARY_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 Toolkit?

使用RPM或Deb时,下载的包是仓库包。此类包仅告知包管理器在哪里可以找到实际的安装包,但不会安装它们。

更多详情请参阅包管理器安装部分。

14.7. 如何通过网络仓库安装旧版CUDA?

根据您的系统配置,您可能无法使用cuda元包安装旧版本的CUDA。为了安装特定版本的CUDA,您可能需要指定通常由cuda元包在您想要安装的版本中安装的所有软件包。

如果您使用yum安装某些旧版本的软件包,依赖关系可能无法按预期解析。在这种情况下,您可能需要向yum传递"--setopt=obsoletes=0"参数,以允许安装那些在比您尝试安装的版本更新的版本中被标记为废弃的软件包。

14.8. 如何处理“处理glx-diversions时遇到错误”?

这种情况有时会在尝试卸载通过.deb安装的CUDA后出现。运行以下命令:

# apt install glx-diversions --reinstall
# apt remove nvidia-alternative

然后重新运行移除CUDA工具包中的命令。

15. 通知

15.1. 通知

本文档仅供信息参考之用,不应视为对产品功能、状态或质量的保证。NVIDIA公司(“NVIDIA”)对本文件所含信息的准确性或完整性不作任何明示或暗示的陈述或保证,并对其中可能存在的错误不承担任何责任。NVIDIA对于因使用此类信息而产生的后果、或因使用该信息导致的第三方专利或其他权利侵权概不负责。本文件不构成对开发、发布或交付任何材料(定义见下文)、代码或功能的承诺。

NVIDIA保留随时对本文件进行更正、修改、增强、改进以及任何其他变更的权利,恕不另行通知。

客户在下单前应获取最新的相关信息,并确认这些信息是最新且完整的。

除非NVIDIA与客户授权代表签署的单独销售协议中另有约定,否则NVIDIA产品的销售均以订单确认时提供的NVIDIA标准销售条款和条件为准(以下简称"销售条款")。NVIDIA特此明确反对将任何客户通用条款适用于本文件所述NVIDIA产品的采购。本文件不直接或间接构成任何合同义务。

NVIDIA产品并非设计、授权或保证适用于医疗、军事、航空、航天或生命支持设备,也不适用于那些可以合理预期NVIDIA产品故障或失灵会导致人身伤害、死亡、财产或环境损害的应用场景。NVIDIA对于在此类设备或应用中使用和/或包含NVIDIA产品不承担任何责任,因此客户需自行承担相关风险。

NVIDIA不声明或保证基于本文档的产品适用于任何特定用途。NVIDIA未必会对每个产品的所有参数进行测试。客户应全权负责评估和确定本文档所含信息的适用性,确保产品适合并满足客户计划的应用需求,并执行必要的应用测试以避免应用或产品出现故障。客户产品设计中的缺陷可能会影响NVIDIA产品的质量和可靠性,并可能导致超出本文档范围的其他或不同的条件和/或要求。对于任何因以下原因导致的故障、损坏、成本或问题,NVIDIA不承担任何责任:(i) 以违反本文档的任何方式使用NVIDIA产品或(ii) 客户产品设计。

本文档不授予任何NVIDIA专利权、版权或其他NVIDIA知识产权的明示或暗示许可。NVIDIA发布的关于第三方产品或服务的信息,不构成NVIDIA对这些产品或服务的使用许可或担保认可。使用此类信息可能需要获得第三方基于其专利或其他知识产权的许可,或需要获得NVIDIA基于其专利或其他知识产权的许可。

本文件中的信息仅可在获得NVIDIA事先书面批准、未经改动完整复制且完全符合所有适用的出口法律法规,并附带所有相关条件、限制和声明的情况下进行复制。

本文件及所有NVIDIA设计规格、参考板、文件、图纸、诊断工具、清单和其他文档(统称及单独称为"材料")均以"现状"提供。NVIDIA不对材料作出任何明示或默示的保证,包括但不限于对不侵权、适销性和特定用途适用性的默示保证免责。在法律允许的最大范围内,NVIDIA不就因使用本文件导致的任何损害承担责任,包括但不限于任何直接、间接、特殊、附带、惩罚性或后果性损害,无论损害成因如何,也无论责任理论为何,即使NVIDIA已被告知发生此类损害的可能性。不论客户因任何原因可能遭受的任何损害,NVIDIA对客户就本文所述产品的全部及累计责任应受产品销售条款的限制。

15.2. OpenCL

OpenCL是苹果公司的商标,经Khronos Group Inc.授权使用。

15.3. 商标

NVIDIA和NVIDIA标识是美国及其他国家NVIDIA公司的商标或注册商标。其他公司及产品名称可能是其各自关联公司的商标。