CUDA和cuDNN为NVIDIA支持GPU运算以及深度神经网络计算加速的算法库。通常需要安装以支持利用GPU加速神经网络的训练和推理。

在已经安装NVIDIA显卡驱动的情况下,可以通过nvidia-smi查看显卡信息和适合的CUDA版本。同时可以在如下的cuDNN版本下载网页查看cuDNN和适配CUDA的版本对应关系。

CUDA版本下载: https://developer.nvidia.com/cuda-toolkit-archive
cuDNN版本下载:​​​​​​https://developer.nvidia.com/rdp/cudnn-archive

选择适合的CUDA和cuDNN版本下载进行安装。个人这里根据显示信息选择CUDA 11.4.3版本和cuDNN 8.2.4版本进行安装。

1 CUDA安装

在CUDA版本下载页面

https://developer.nvidia.com/cuda-toolkit-archive

选择需要下载的CUDA版本,根据页面提示,选在对应的系统、平台等选下,选择deb或者runfile类型安装文件,个人选择runfile安装文件。根据提示,通过

$ wget https://developer.download.nvidia.com/.../cuda_11.4.3_470.82.01_linux.run

下载安装文件,下载后运行

$ chmod +x cuda_11.4.3_470.82.01_linux.run

增加可执行权限,然后运行

$ sudo ./cuda_11.4.3_470.82.01_linux.run

进行安装。安装选项中去掉显卡驱动安装的勾选,在已经安装显卡驱动的情况下,避免与已有驱动程序的冲突。安装之后默认会产生/usr/local/cuda目录,其中包含已安装的CUDA内容,可以通过

$ cat /usr/local/cuda/version.json        #旧版本为version.txt

查看安装的版本信息。可以通过运行samples下的程序检查是否安装有效,如下

$ cd /usr/local/cuda/samples/1_Utilities/deviceQuery
$ sudo make ./deviceQuery
$ ./deviceQuery

进入目录,编译生成程序,然后运行程序。出现类似如下的信息

最后显示结果 Result = PASS,表示安装成功。

之后进行环境配置,把CUDA相关命令和库文件添加到系统目录中。不然有些情况会出现找不到命令(如nvcc)或者库的问题。

$ sudo gedit /etc/profile

修改profle文件,这个是对所有用户有效,如果仅对当前用户,则修改~/.bashrc文件。在最后部分加上

        export PATH="/usr/local/cuda/bin:$PATH"
        export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

然后运行

$ source /etc/profile

使更改生效,之后运行

$ nvcc -V

就能够显示安装的CUDA版本信息。

2 cuDNN安装

从cuDNN下载链接

https://developer.nvidia.com/rdp/cudnn-archive

下载对应的cuDNN的版本。

选择cuDNN Library for Linux (x86_64) 选项,下载后得到cudnn-11.4-linux-x64-v8.2.4.15.tgz文件,进行解压

$ tar -zxvf cudnn-11.4-linux-x64-v8.2.4.15.tgz

解压后产生cuda目录,里面包含cuDNN的库文件、头文件等内容,其中包含目录

include - cuDNN库头文件
lib64 - cuDNN库文件

把相应的库文件和头文件复制到CUDA目录,即安装完成。

$ sudo cp cuda/lib64/* /usr/local/cuda/lib64
$ sudo cp cuda/include/* /usr/local/cuda/include

通过指令

$ cat /usr/local/cuda/include/cudnn_version.h

可以查看cuDNN的版本信息。

有些地方推荐deb的方式来安装cuDNN,即在选项中选择Runtime Library for Ubuntu 18.04,如下

可以同时安装Developer Library和Code Samples,这种方式的好处是包含了示例程序(Code Samples)的安装,可以用来测试cuDNN的正常工作。

分别下载上述的deb文件,之后依次进行安装

$ sudo dpkg -i libcudnn8_8.1.1.33-1+cuda11.2_amd64.deb
$ sudo dpkg -i libcudnn8-dev_8.1.1.33-1+cuda11.2_amd64.deb
$ sudo dpkg -i libcudnn8-samples_8.1.1.33-1+cuda11.2_amd64.deb

之后cuDNN的示例程序会产生在/usr/src/cudnn_samples_v8目录,可以拷贝目录至用户自己的目录进行测试,如下

$ cp -r /usr/src/cudnn_samples_v8 .

然后用其中的mnist示例进行测试

$ cd cudnn_samples_v8/mnistCUDNN

进行编译

$ make

其中如果出现缺少FreeImage.h头文件的错误,这是因为没有安装freeimage的库,如下安装

$ sudo apt install libfreeimage3 libfreeimage-dev

再进行make就可以通过。之后运行

$ ./mnistCUDNN

出现如下类似字符信息

最后显示Test passed!,表示安装成功。 

参考链接:https://blog.csdn.net/chook_you_too_b/article/details/115326310
                  https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
                     https://blog.csdn.net/chook_you_too_b/article/details/115326310