在 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-get
或 dnf
。当使用 RPM 或 Debian 本地 repo 安装程序时,下载的软件包包含存储在本地文件系统 /var/
中的存储库快照。此类软件包仅告知软件包管理器在哪里可以找到实际的安装软件包,但不会安装它们。
软件包管理器网络安装#
Ubuntu/Debian 网络安装#
启用网络存储库。执行 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
刷新存储库元数据。
sudo apt-get update
安装每个 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-sbsa
和cudnn9-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 网络安装#
启用存储库。
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
。
安装每个 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
从开发者网站或通过
wget
下载 Debian 软件包。本地 Debian 软件包可在 https://developer.nvidia.com/cudnn 获取。单击描述您的目标平台的绿色按钮,然后选择 Deb (本地) 作为安装程序类型。
或者,运行
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
导航到包含 cuDNN Debian 本地安装程序文件的
downloads
目录。启用本地存储库。
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
导入 CUDA GPG 密钥。
sudo cp /var/cudnn-local-*/cudnn-*-keyring.gpg /usr/share/keyrings/
刷新存储库元数据。
sudo apt-get update
安装每个 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
从开发者网站或通过
wget
下载 RPM 软件包。本地 RPM 软件包可在 https://developer.nvidia.com/cudnn 获取。单击描述您的目标平台的绿色按钮,然后选择 RPM (本地) 作为安装程序类型。
或者,运行
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
导航到包含 cuDNN RPM 本地安装程序文件的
downloads
目录。启用本地存储库。
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
刷新存储库元数据。
sudo dnf clean all
安装每个 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 软件包。
元软件包名称 |
预期用例 |
---|---|
|
为最新的可用 CUDA 版本安装最新的可用 cuDNN。 |
|
为最新的可用 CUDA 版本安装最新的可用 cuDNN 9。 |
|
为最新的可用 CUDA 12 版本安装最新的可用 cuDNN。 |
|
为最新的可用 CUDA 12 版本安装最新的可用 cuDNN 9。 |
|
为最新的可用 CUDA 11 版本安装最新的可用 cuDNN。 |
|
为最新的可用 CUDA 11 版本安装最新的可用 cuDNN 9。 |
|
为最新的可用 CUDA 版本安装最新的可用 cuDNN,用于跨平台开发到 SBSA。 |
|
为最新的可用 CUDA 版本安装最新的可用 cuDNN 9,用于跨平台开发到 SBSA。 |
|
为最新的可用 CUDA 版本安装最新的可用 cuDNN,用于跨平台开发到 ARMv8。 |
|
为最新的可用 CUDA 版本安装最新的可用 cuDNN 9,用于跨平台开发到 ARMv8。 |
注意
以上软件包安装 cuDNN 9.x 的最新主要和次要补丁版本。要安装特定的 cuDNN 9.x.y 版本,请将 cudnn9* 软件包版本固定为 9.x.y。
基础软件包#
基础软件包是 RPM 和 Debian 软件包,其中包含实际的 cuDNN 交付件,例如二进制文件和标头。它们可以让您精细地控制要安装的 cuDNN 部分。
基础软件包名称 (Ubuntu/Debian) |
基础软件包名称 (RHEL/CentOS) |
预期用例 |
---|---|---|
|
|
安装运行时软件包,其中包含适用于最新可用 CUDA 12 版本的最新可用 cuDNN 9 动态库。 |
|
|
安装开发软件包,其中包含适用于最新可用 CUDA 12 版本的最新可用 cuDNN 9 标头。(运行时软件包是依赖项。) |
|
|
安装静态软件包,其中包含适用于最新可用 CUDA 12 版本的最新可用 cuDNN 9 静态库。(开发和运行时软件包是依赖项。) |
|
|
安装运行时软件包,其中包含适用于最新可用 CUDA 11 版本的最新可用 cuDNN 9 动态库。 |
|
|
安装开发软件包,其中包含适用于最新可用 CUDA 11 版本的最新可用 cuDNN 9 标头。(运行时软件包是依赖项。) |
|
|
安装静态软件包,其中包含适用于最新可用 CUDA 11 版本的最新可用 cuDNN 9 静态库。(开发和运行时软件包是依赖项。) |
|
|
安装最新的可用 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_64
和arm64-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_64
和aarch64
(arm64-sbsa
) 架构。
先决条件#
如果您的 pip
和 wheel
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
示例。
安装 cuDNN 示例。
sudo apt-get -y install libcudnn9-samples
或
sudo dnf -y install libcudnn9-samples
转到可写路径。
cd $HOME/cudnn_samples_v9/mnistCUDNN
编译
mnistCUDNN
示例。make clean && make
运行
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 版本。