如何在 Ubuntu 22.04 上安装 NVIDIA cuDNN 教程
简介
CUDA Deep Neural Network (cuDNN) 是 NVIDIA 提供的一个库,它使得深度神经网络的 GPU 加速计算成为可能。通过在 Ubuntu 上安装 cuDNN,开发者可以直接调用函数来训练和运行神经网络的推理,而无需编写基础函数。神经网络是大多数现代深度学习应用的基础,比如生成式 AI 模型。
本教程将指导你如何在 Ubuntu 22.04 服务器上安装 NVIDIA cuDNN 库。
准备工作
服务器准备
必要前提:
- 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。
我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。
注册链接: https://www.rainyun.com/NTE2NDM3_
创建雨云服务器
以下步骤仅供参考,请根据实际需求选择配置。
-
点击 云产品 → 云服务器 → 立即购买。
-
选择距离你较近的区域,以保证低延迟。
-
按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
-
最后按照提示进行购买。
-
购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。
-
我们使用
PowerShell
进行SSH
远程连接到服务器,Win+R
打开运行窗口,输入powershell
后点击确定。# su pythonuser
- 使用 SSH 访问服务器。
- 创建一个非 root 用户,并赋予 sudo 权限。
- 切换到新的非 root 用户账户。将
pythonuser
替换为你的用户名。
-
-
到此为止,我们的云服务器就远程连接上了。
安装和配置步骤
第一步:安装 CUDA 工具包
第二步:安装 cuDNN 原生方式(推荐)
在本节中,我们将使用官方发布文件,为 CUDA 版本 12.x
安装 cuDNN 版本 8.9.4
。
-
使用 Chrome 等网络浏览器访问 cuDNN 下载页面。
-
同意 cuDNN 许可协议。
-
点击 Download cuDNN, for CUDA 资源链接。
-
在打开的下拉对话框中,点击 Local Installer for Linux x86_64 (Tar) 链接,将最新发布文件下载到你的计算机。
你可以下载
.deb
发布文件,但安装时可能会覆盖系统文件。
本文使用的是 cuDNN 版本 8.9.4
for CUDA 12.x
,文件名为:
cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz
- 在新终端窗口中,切换到你的下载目录:
$ cd Downloads/
- 使用 SCP 等安全传输协议,将 cuDNN 发布文件上传到你的远程服务器:
$ scp cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz pythonuser@SERVER-IP:/home/pythonuser/
替换 pythonuser
和 SERVER-IP
为你的 Vultr 服务器详细信息。
- 传输成功后,在 SSH 会话中,切换到你的用户主目录:
$ cd /home/pythonuser/
- 列出目录中的文件:
$ ls -l
输出:
-rw-rw-r-- 1 pythonuser pythonuser 887509908 Sep 9 07:42 cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz
确认 cuDNN 发布文件可用。
- 从 cuDNN 发布文件中提取文件:
$ tar -xf cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz
- 将 cuDNN 头文件复制到 CUDA
include
目录:
$ sudo cp cudnn-linux-x86_64-8.9.4.25_cuda12-archive/include/cudnn*.h /usr/local/cuda/include/
- 将 cuDNN 库文件复制到 CUDA 库目录:
$ cp -P cudnn-linux-x86_64-8.9.4.25_cuda12-archive/lib/libcudnn* /usr/local/cuda/lib64/
- 更改库文件目录权限,授予所有系统用户对目录的读取访问权限:
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
第三步:使用 Conda 安装 cuDNN
在本节中,我们将使用 Conda 在 Ubuntu 上安装 cuDNN 版本 8.9.2.26
for CUDA 11.x
。
- 使用 Conda 安装 CUDA 工具包版本
11.8.0
:
$ conda install -c "nvidia/label/cuda-11.8.0" cuda
安装后,请按照安装后的步骤激活服务器上的 CUDA Toolkit。
- 从默认通道安装最新的 cuDNN 版本:
$ conda install cudnn=="8.9.2.26" -c default
要安装特定版本,请使用命令语法 conda install cudnn=="x.y.z.w" -c channel-name
。上述命令从默认通道安装 cuDNN 版本 8.9.2.26
。
第四步:验证 cuDNN 安装
要测试你的 cuDNN 安装,请按照以下步骤下载并运行 NVIDIA 验证程序:
- 在你的网络浏览器中,访问 cuDNN 下载页面。
- 同意 cuDNN 软件许可协议。
- 找到并点击
Local installer for Ubuntu22.04 x86_64 (Deb)
文件链接,将文件下载到你的计算机。
本文使用的是 cuDNN 版本 8.9.4
,文件名为:
cudnn-local-repo-ubuntu2204-8.9.4.25_1.0-1_amd64.deb
- 在新的终端会话中,切换到你的下载文件目录:
$ cd Downloads
- 使用 SCP 上传文件到你的远程服务器:
$ scp cudnn-local-repo-ubuntu2204-8.9.4.25_1.0-1_amd64.deb pythonuser@SERVER-IP:/home/pythonuser/
- 在你的 SSH 会话中,切换到用户的主目录:
$ cd /home/pythonuser/
- 安装所需的依赖库:
$ sudo apt install libfreeimage3 libfreeimage-dev
- 列出目录中的文件:
$ ls -l
确认 .deb
文件可用。
- 创建一个新的临时目录,例如
deb
:
$ mkdir deb
- 将上传的
.deb
安装包移动到目录中:
$ mv cudnn-local-repo-ubuntu2204-8.9.4.25_1.0-1_amd64.deb deb/
- 切换到目录:
$ cd deb
- 使用
ar
工具从 deb 文件中提取内容:
$ ar x cudnn-local-repo-ubuntu2204-8.9.4.25_1.0-1_amd64.deb
- 提取成功后,列出目录中的文件:
$ ls -l
输出:
-rw-r--r-- 1 pythonuser pythonuser 1252 Sep 9 08:44 control.tar.xz
-rw-rw-r-- 1 pythonuser pythonuser 904535554 Sep 9 08:43 cudnn-local-repo-ubuntu2204-8.9.4.25_1.0-1_amd64.deb
-rw-r--r-- 1 pythonuser pythonuser 904532772 Sep 9 08:44 data.tar.xz
确认新的 data.tar.xz
可用。
- 从
data.tar.xz
归档中提取文件:
$ tar -xf data.tar.xz
提取完成后,etc
、usr
和 var
子目录被添加到目录中。
- 切换到
var
目录中的cudnn-local-repo-ubuntu2204-8.9.4.25
子目录:
$ cd var/cudnn-local-repo-ubuntu2204-8.9.4.25/
- 在目录中,从
libcudnn8-samples_8.9.4.25-1+cuda12.2_amd64.deb
文件中提取文件:
$ ar x libcudnn8-samples_8.9.4.25-1+cuda12.2_amd64.deb
- 从新的
data.tar.xz
归档文件中提取文件:
$ tar -xf data.tar.xz
- 提取完成后,切换到包含源代码和示例程序文件的
usr
目录:
$ cd usr/src/cudnn_samples_v8/
- 切换到
mnistCUDNN
程序目录:
$ cd mnistCUDNN
- 清除任何之前的构建工件:
$ make clean
- 编译
MNIST
程序:
$ make
如果成功,你的输出应该如下所示:
CUDA_VERSION is 12000
Linking agains cublasLt = true
TARGET ARCH: x86_64
.
.
/usr/local/cuda/bin/nvcc -I/usr/local/cuda/include -I/usr/local/cuda/include
-IFreeImage/include -ccbin g++ -m64 -gencode
arch=compute_50,code=sm_50 -gencode
.
.
arch=compute_90,code=compute_90 -o fp16_dev.o -c fp16_dev.cu
.
g++ -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include -o mnistCUDNN.o -c mnistCUDNN.cpp
/usr/local/cuda/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_50,code=sm_50 -gencode
.
arch=compute_90,code=compute_90 -o mnistCUDNN fp16_dev.o fp16_emu.o mnistCUDNN.o -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib64 -lcublasLt -LFreeImage/lib/linux/x86_64 -LFreeImage/lib/linux -lcudart -lcublas -lcudnn -lfreeimage -lstdc++ -lm
如果命令返回编译错误,请运行 mnistCUDNN
:
$ ./mnistCUDNN
如果成功,你的输出应该如下所示:
Executing: mnistCUDNN
.
Testing single precision
.
Loading binary file data/conv1.bin
.
Testing cudnnGetConvolutionForwardAlgorithm_v7 ...
.
^^^^ CUDNN_STATUS_SUCCESS for Algo 5: -1.000000 time requiring 178432 memory
.
Testing cudnnFindConvolutionForwardAlgorithm ...
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.045248 time requiring 0 memory
.
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 5.640960 time requiring 184784 memory
.
Test passed!
当测试成功时,cuDNN 已在你的服务器上激活并安装。
结尾
本教程介绍了如何在 Ubuntu 22.04 服务器上使用两种选项(原生和 Conda)安装 NVIDIA cuDNN 包。你还验证了系统配置以安装匹配的 cuDNN 版本。要使用 cuDNN 开发应用程序,请访问 cuDNN API 参考,其中讨论了使用神经网络进行训练和推理的可用 cuDNN 函数。
雨云 - 新一代云服务提供商: https://www.rainyun.com/NTE2NDM3_