在 Linux 上安装 cuDNN 后端#

安装适用于 Linux 的 CUDA 工具包#

有关在 Linux 上安装 CUDA(包括 CUDA 驱动程序和工具包)的说明,请参阅以下指南: NVIDIA CUDA Linux 安装指南

安装 Zlib#

对于 Ubuntu 用户,要安装 zlib 软件包,请运行

sudo apt-get install zlib1g

对于 RHEL 用户,要安装 zlib 软件包,请运行

sudo yum install zlib

在 Linux 上安装 cuDNN 后端软件包#

可以使用特定于发行版的软件包(RPM 和 Debian 软件包)或独立于发行版的软件包(Tarball)安装 cuDNN。

独立于发行版的软件包的优点是在更广泛的 Linux 发行版中工作,但不会更新发行版的原生软件包管理系统。特定于发行版的软件包与发行版的原生软件包管理系统接口。建议尽可能使用特定于发行版的软件包。

软件包管理器安装#

使用 RPM 或 Debian 软件包进行安装会与您系统的软件包管理系统接口。如果启用了在线网络存储库,RPM 或 Debian 软件包将在安装时使用软件包管理器自动下载:apt-getdnf。当使用 RPM 或 Debian 本地 repo 安装程序时,下载的软件包包含存储在本地文件系统 /var/ 中的存储库快照。此类软件包仅告知软件包管理器在哪里可以找到实际的安装软件包,但不会安装它们。

软件包管理器网络安装#

Ubuntu/Debian 网络安装#
  1. 启用网络存储库。执行 NVIDIA CUDA Ubuntu 安装指南NVIDIA CUDA Debian 安装指南 中描述的步骤。

    对于上述链接中注明的 $distro/$arch,请参阅 cuDNN 支持矩阵,了解 $distro/$arch 支持的版本,因为 cuDNN 的支持矩阵可能与 CUDA 不同。

    其中 $distro/$arch 应替换为以下之一

    • ubuntu2004/x86_64

    • ubuntu2004/sbsa

    • ubuntu2004/cross-linux-sbsa

    • ubuntu2004/arm64

    • ubuntu2004/cross-linux-aarch64

    • ubuntu2204/x86_64

    • ubuntu2204/sbsa

    • ubuntu2204/cross-linux-sbsa

    • ubuntu2204/arm64

    • ubuntu2204/cross-linux-aarch64

    • ubuntu2404/x86_64

    • ubuntu2404/sbsa

    • ubuntu2404/cross-linux-sbsa

    • ubuntu2404/arm64

    • ubuntu2404/cross-linux-aarch64

    • debian12/x86_64

    对于 arm64-sbsa 存储库

    • 原生: $distro/sbsa

    • 交叉: $distro/cross-linux-sbsa

    对于 aarch64-jetson 存储库

    • 原生: $distro/arm64

    • 交叉: $distro/cross-linux-aarch64

  2. 刷新存储库元数据。

    sudo apt-get update
    
  3. 安装每个 CUDA 的元软件包。

    要为 CUDA 11 安装,请运行

    sudo apt-get -y install cudnn9-cuda-11
    

    要为 CUDA 12 安装,请运行

    sudo apt-get -y install cudnn9-cuda-12
    

注意

  • 一次只能安装一个 CUDA 工具包版本的 cuDNN 9。

  • cuDNN 9 仅支持 ARMv8 (aarch64-jetson) 上的 CUDA 12

  • 在受支持的平台上,cudnn9-cross-sbsacudnn9-cross-aarch64 元软件包分别安装跨平台开发到 SBSA (arm64-sbsa) 和 ARMv8 (aarch64-jetson) 所需的所有软件包。

    • CUDA 11 的交叉 arm64-sbsa

      sudo apt-get -y install libcudnn9-cross-sbsa-cuda-11
      
    • CUDA 12 的交叉 arm64-sbsa

      sudo apt-get -y install cudnn9-cross-sbsa
      
    • CUDA 12 的交叉 aarch64-jetson

      sudo apt-get -y install cudnn9-cross-aarch64
      
RHEL 9/Rocky 9 和 RHEL 8/Rocky 8 网络安装#
  1. 启用存储库。

    sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/$distro/$arch/cuda-$distro.repo
    sudo dnf clean all
    

    其中 $distro/$arch 应替换为以下之一

    • rhel8/x86_64

    • rhel8/sbsa

    • rhel9/x86_64

    • rhel9/sbsa

    注意

    对于 Rocky 用户,仅支持以下内容。

    • 对于 Rocky 8,rhel8/x86_64

    • 对于 Rocky 9,rhel9/x86_64

  2. 安装每个 CUDA 的元软件包。

    要为 CUDA 11 安装,请运行

    sudo dnf -y install --allowerasing cudnn9-cuda-11
    

    要为 CUDA 12 安装,请运行

    sudo dnf -y install --allowerasing cudnn9-cuda-12
    

注意

一次只能安装一个 CUDA 工具包版本的 cuDNN 9。

软件包管理器本地安装#

Ubuntu/Debian 本地安装#

注意

在发出以下命令之前,您必须将 9.x.y$distro$architecture 替换为您各自的 cuDNN 版本、操作系统发行版和平台架构。

其中 $distro 是以下之一

  • ubuntu2004

  • ubuntu2204

  • ubuntu2404

  • debian12

并且 $architecture 是以下之一

  • 对于 Ubuntu 24.04/22.04/20.04

    • amd64

    • arm64

  • 对于 Debian 11/12

    • amd64

  1. 从开发者网站或通过 wget 下载 Debian 软件包。

    1. 本地 Debian 软件包可在 https://developer.nvidia.com/cudnn 获取。单击描述您的目标平台的绿色按钮,然后选择 Deb (本地) 作为安装程序类型。

    2. 或者,运行

      wget https://developer.download.nvidia.com/compute/cudnn/9.x.y/local_installers/cudnn-local-repo-$distro-9.x.y_1.0-1_$architecture.deb
      

      注意

      对于 Ubuntu 用户,以下命令特定于 SBSA (arm64-sbsa) 和 ARMv8 (aarch64-jetson) 平台。

      • 原生 arm64-sbsa

        wget https://developer.download.nvidia.com/compute/cudnn/9.x.y/local_installers/cudnn-local-repo-$distro-9.x.y_1.0-1_arm64.deb
        
      • 交叉 arm64-sbsa

        wget https://developer.download.nvidia.com/compute/cudnn/9.x.y/local_installers/cudnn-local-repo-cross-sbsa-$distro-9.x.y_1.0-1_all.deb
        
      • 原生 aarch64-jetson

        wget https://developer.download.nvidia.com/compute/cudnn/9.x.y/local_installers/cudnn-local-tegra-repo-$distro-9.x.y_1.0-1_arm64.deb
        
      • 交叉 aarch64-jetson

        wget https://developer.download.nvidia.com/compute/cudnn/9.x.y/local_installers/cudnn-local-repo-cross-aarch64-$distro-9.x.y_1.0-1_all.deb
        
  2. 导航到包含 cuDNN Debian 本地安装程序文件的 downloads 目录。

  3. 启用本地存储库。

    sudo dpkg -i cudnn-local-repo-$distro-9.x.y_1.0-1_$architecture.deb
    

    注意

    对于 Ubuntu 用户,以下命令特定于 SBSA (arm64-sbsa) 和 ARMv8 (aarch64-jetson) 平台。

    • 原生 arm64-sbsa

      sudo dpkg -i cudnn-local-repo-$distro-9.x.y_1.0-1_arm64.deb
      
    • 交叉 arm64-sbsa

      sudo dpkg -i cudnn-local-repo-cross-sbsa-$distro-9.x.y_1.0-1_all.deb
      
    • 原生 aarch64-jetson

      sudo dpkg -i cudnn-local-tegra-repo-$distro-9.x.y_1.0-1_arm64.deb
      
    • 交叉 aarch64-jetson

      sudo dpkg -i cudnn-local-repo-cross-aarch64-$distro-9.x.y_1.0-1_all.deb
      
  4. 导入 CUDA GPG 密钥。

    sudo cp /var/cudnn-local-*/cudnn-*-keyring.gpg /usr/share/keyrings/
    
  5. 刷新存储库元数据。

    sudo apt-get update
    
  6. 安装每个 CUDA 的元软件包。

    要为 CUDA 11 安装,请运行

    sudo apt-get -y install cudnn9-cuda-11
    

    要为 CUDA 12 安装,请运行

    sudo apt-get -y install cudnn9-cuda-12
    

注意

  • 一次只能安装一个 CUDA 工具包版本的 cuDNN 9。

  • cuDNN 9 仅支持 ARMv8 (aarch64-jetson) 上的 CUDA 12

  • 对于 Ubuntu 用户,以下命令特定于 SBSA (arm64-sbsa) 和 ARMv8 (aarch64-jetson) 平台。

    • CUDA 11 的交叉 arm64-sbsa

      sudo apt-get -y install libcudnn9-cross-sbsa-cuda-11
      
    • CUDA 12 的交叉 arm64-sbsa

      sudo apt-get -y install cudnn9-cross-sbsa
      
    • CUDA 12 的交叉 aarch64-jetson

      sudo apt-get -y install cudnn9-cross-aarch64
      
RHEL 9/Rocky 9 和 RHEL 8/Rocky 8 本地安装#

注意

在发出以下命令之前,您必须将 9.x.y$distro$architecture 替换为您各自的 cuDNN 版本、操作系统发行版和平台架构。

其中 $distro 是以下之一

  • 对于 RHEL 9/Rocky 9

    • rhel9

  • 对于 RHEL 8/Rocky 8

    • rhel8

并且 $architecture 是以下之一

  • 对于 RHEL 9

    • x86_64

    • aarch64

  • 对于 Rocky 9

    • x86_64

  • 对于 RHEL 8

    • x86_64

    • aarch64

  • 对于 Rocky 8

    • x86_64

  1. 从开发者网站或通过 wget 下载 RPM 软件包。

    1. 本地 RPM 软件包可在 https://developer.nvidia.com/cudnn 获取。单击描述您的目标平台的绿色按钮,然后选择 RPM (本地) 作为安装程序类型。

    2. 或者,运行

      wget https://developer.download.nvidia.com/compute/cudnn/9.x.y/local_installers/cudnn-local-repo-$distro-9.x.y-1.0-1.$architecture.rpm
      

      注意

      对于 RHEL 用户,以下命令特定于 SBSA (arm64-sbsa) 平台。

      • 原生 arm64-sbsa

        wget https://developer.download.nvidia.com/compute/cudnn/9.x.y/local_installers/cudnn-local-repo-$distro-9.x.y-1.0-1.aarch64.rpm
        
  2. 导航到包含 cuDNN RPM 本地安装程序文件的 downloads 目录。

  3. 启用本地存储库。

    sudo rpm -i cudnn-local-repo-$distro-9.x.y-1.0-1.$architecture.rpm
    

    注意

    对于 RHEL 用户,以下命令特定于 SBSA (arm64-sbsa) 平台。

    • 原生 arm64-sbsa

      sudo rpm -i cudnn-local-repo-$distro-9.x.y-1.0-1.aarch64.rpm
      
  4. 刷新存储库元数据。

    sudo dnf clean all
    
  5. 安装每个 CUDA 的元软件包。

    要为 CUDA 11 安装,请运行

    sudo dnf -y install --allowerasing cudnn9-cuda-11
    

    要为 CUDA 12 安装,请运行

    sudo dnf -y install --allowerasing cudnn9-cuda-12
    

注意

一次只能安装一个 CUDA 工具包版本的 cuDNN 9。

其他软件包管理器功能#

元软件包#

元软件包是 RPM 和 Debian 软件包,它们不包含(或很少包含)文件,但具有多个依赖项。当您可能不知道您想要的软件包的详细信息时,它们用于安装许多 cuDNN 软件包。

cuDNN 元软件包#

元软件包名称

预期用例

cudnn

为最新的可用 CUDA 版本安装最新的可用 cuDNN。

cudnn9

为最新的可用 CUDA 版本安装最新的可用 cuDNN 9。

cudnn-cuda-12

为最新的可用 CUDA 12 版本安装最新的可用 cuDNN。

cudnn9-cuda-12

为最新的可用 CUDA 12 版本安装最新的可用 cuDNN 9。

cudnn-cuda-11

为最新的可用 CUDA 11 版本安装最新的可用 cuDNN。

cudnn9-cuda-11

为最新的可用 CUDA 11 版本安装最新的可用 cuDNN 9。

cudnn-cross-sbsa

为最新的可用 CUDA 版本安装最新的可用 cuDNN,用于跨平台开发到 SBSA。

cudnn9-cross-sbsa

为最新的可用 CUDA 版本安装最新的可用 cuDNN 9,用于跨平台开发到 SBSA。

cudnn-cross-aarch64

为最新的可用 CUDA 版本安装最新的可用 cuDNN,用于跨平台开发到 ARMv8。

cudnn9-cross-aarch64

为最新的可用 CUDA 版本安装最新的可用 cuDNN 9,用于跨平台开发到 ARMv8。

注意

以上软件包安装 cuDNN 9.x 的最新主要和次要补丁版本。要安装特定的 cuDNN 9.x.y 版本,请将 cudnn9* 软件包版本固定为 9.x.y。

基础软件包#

基础软件包是 RPM 和 Debian 软件包,其中包含实际的 cuDNN 交付件,例如二进制文件和标头。它们可以让您精细地控制要安装的 cuDNN 部分。

cuDNN 基础软件包#

基础软件包名称 (Ubuntu/Debian)

基础软件包名称 (RHEL/CentOS)

预期用例

libcudnn9-cuda-12

libcudnn9-cuda-12

安装运行时软件包,其中包含适用于最新可用 CUDA 12 版本的最新可用 cuDNN 9 动态库。

libcudnn9-dev-cuda-12

libcudnn9-devel-cuda-12

安装开发软件包,其中包含适用于最新可用 CUDA 12 版本的最新可用 cuDNN 9 标头。(运行时软件包是依赖项。)

libcudnn9-static-cuda-12

libcudnn9-static-cuda-12

安装静态软件包,其中包含适用于最新可用 CUDA 12 版本的最新可用 cuDNN 9 静态库。(开发运行时软件包是依赖项。)

libcudnn9-cuda-11

libcudnn9-cuda-11

安装运行时软件包,其中包含适用于最新可用 CUDA 11 版本的最新可用 cuDNN 9 动态库。

libcudnn9-dev-cuda-11

libcudnn9-devel-cuda-11

安装开发软件包,其中包含适用于最新可用 CUDA 11 版本的最新可用 cuDNN 9 标头。(运行时软件包是依赖项。)

libcudnn9-static-cuda-11

libcudnn9-static-cuda-11

安装静态软件包,其中包含适用于最新可用 CUDA 11 版本的最新可用 cuDNN 9 静态库。(开发运行时软件包是依赖项。)

libcudnn9-samples

libcudnn9-samples

安装最新的可用 cuDNN 示例源代码。

注意

以上软件包安装 cuDNN 9.x 的最新主要和次要补丁版本。要安装特定的 cuDNN 9.x.y 版本,请将 libcudnn9* 软件包版本固定为 9.x.y。

Tarball 安装#

为了满足不断增长的客户群的需求,他们需要替代的安装程序打包格式以及输入到社区 CI/CD 系统的方法,Tarball 可供下载。

Redist 存档#

Tarball 在 https://developer.download.nvidia.com/compute/cudnn/redist/ 提供。

这些 .tar.xz 存档不会替换现有软件包,例如 .deb.rpm,并且不适用于一般使用,因为它们不是安装程序。

对于每个版本,都提供一个 JSON 清单,例如 redistrib_9.x.y.z.json,它对应于 cuDNN 9.x.y.z 版本标签,其中包括发布日期、每个组件的名称、许可证名称、每个平台的相对 URL 和校验和。

有关解析这些 JSON 文件的详细信息,请参见 解析 Redistrib JSON

Conda 安装#

可通过 Conda 安装程序安装的 cuDNN 软件包可在 https://anaconda.org/nvidia/cudnn 获取。

注意

在发出以下命令之前,您必须将 9.x.y.z 替换为您各自的 cuDNN 版本,并将 <cuda-major-version> 替换为您各自的 CUDA 主要版本(11 或 12)。仅提供 x86_64arm64-sbsa Conda 软件包。

使用 Conda 安装 cuDNN#

要使用 Conda 安装 cuDNN,请运行

conda install cudnn cuda-version=<cuda-major-version> -c nvidia

使用 Conda 安装特定版本的 cuDNN#

在特定 cuDNN 版本下发布的所有 Conda 软件包都标有该版本标签。要安装特定版本,请在 install 命令中包含该标签。例如

conda install cudnn cuda-version=<cuda-major-version> -c nvidia/label/9.x.y

使用 Conda 卸载 cuDNN#

要使用 Conda 卸载 cuDNN,请运行

conda remove cudnn

Python Wheels - Linux 安装#

NVIDIA 提供 Python Wheels 以通过 pip 安装 cuDNN,主要用于将 cuDNN 与 Python 一起使用。使用此安装方法,cuDNN 安装环境通过 pip 进行管理。必须格外小心地设置您的主机环境,以便在 pip 环境之外使用 cuDNN。

注意

在发出以下命令之前,您必须将 9.x.y.z 替换为您各自的 cuDNN 版本。在 Linux 上,仅支持 x86_64aarch64 (arm64-sbsa) 架构。

先决条件#

如果您的 pipwheel Python 模块不是最新的,请使用以下命令升级这些 Python 模块。如果这些 Python 模块已过期,则本节稍后介绍的命令可能会失败。

python3 -m pip install --upgrade pip wheel

使用 Pip 安装 cuDNN#

要为 CUDA 12 安装 cuDNN,请运行

python3 -m pip install nvidia-cudnn-cu12

要为 CUDA 11 安装 cuDNN,请运行

python3 -m pip install nvidia-cudnn-cu11

要安装特定版本的 cuDNN,请在命令中包含版本号。例如,要为 CUDA 12 安装 cuDNN 9.x.y.z,请运行

python3 -m pip install nvidia-cudnn-cu12==9.x.y.z

要为 CUDA 11 安装 cuDNN 9.x.y.z,请运行

python3 -m pip install nvidia-cudnn-cu11==9.x.y.z

注意

  • 一次只能安装一个 CUDA 工具包版本的 cuDNN 9。

  • 用于 aarch64 (arm64-sbsa) 的 cuDNN 9 Python Wheels 仅适用于 CUDA 12。

验证 Linux 上的安装#

要验证 cuDNN 是否已安装并正常运行,请编译 Debian 文件中 /usr/src/cudnn_samples_v9 目录中的 mnistCUDNN 示例。

  1. 安装 cuDNN 示例。

    sudo apt-get -y install libcudnn9-samples
    

    sudo dnf -y install libcudnn9-samples
    
  2. 转到可写路径。

    cd $HOME/cudnn_samples_v9/mnistCUDNN
    
  3. 编译 mnistCUDNN 示例。

    make clean && make
    
  4. 运行 mnistCUDNN 示例。

    ./mnistCUDNN
    

如果 cuDNN 在您的 Linux 系统上正确安装并运行,您将看到类似于以下内容的消息

Test passed!

从旧版本的 cuDNN 升级到 cuDNN 9.x.y#

由于 cuDNN 版本 9 可以与以前版本的 cuDNN 共存,因此如果用户有旧版本的 cuDNN(例如 v7 或 v8),则安装版本 9 不会自动删除旧版本。因此,如果用户想要最新版本,请按照安装步骤安装 cuDNN 版本 9

要从旧版本的 cuDNN 升级到 9,请参阅 软件包管理器安装 部分,并按照针对您的目标平台的步骤操作。

之后,要在旧安装和新安装之间切换,请发出 sudo update-alternatives --config libcudnn 并选择适当的 cuDNN 版本。