一、下载与CUDA版本对应的cudnn
去官网,根据之前安装好的CUDA版本选择一个合适的cudnn版本。我之前安装的是cuda10.2,因此这里选择了cuDNN v8.1.0。
根据教程,我下载了以下四个文件,但是后面才知道这是两种安装方式。
二、cudnn的安装
2.1 第一种安装方式
将从第一个链接下载的cudnn-10.2-linux-x64-v8.1.0.77.solitairetheme8文件后缀名称改为.tgz的。然后利用tar -xzvf对其进行解压。
将解压出来的部分文件复制到指定文件夹,并对其赋予执行权限。
sudo cp cuda/include/cudnn.h /usr/local/cuda/includesudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
2.2 第二种安装方式
sudo dpkg -i libcudnn7_8.1.0.77-1+cuda10.2_amd64.debsudo dpkg -i libcudnn7-dev_8.1.0.77-1+cuda10.2_amd64.debsudo dpkg -i libcudnn7-doc_8.1.0.77-1+cuda10.2_amd64.deb
这里我遇到了链接问题,后面补充。
三、验证安装是否成功
cp -r /usr/src/cudnn_samples_v8/ .cd cudnn_samples_v8/mnistCUDNN/make clean && make./mnistCUDNN
等结果Result = PASS,即可说明安装成功。
四、安装时遇到的问题
4.1文件链接问题:
/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 is not a symbolic link/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 is not a symbolic link/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 is not a symbolic link/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 is not a symbolic link/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 is not a symbolic link/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.8 is not a symbolic link/sbin/ldconfig.real: /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 is not a symbolic link
解决方法:将cudnn的版本号改为自己的版本号即可
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.1.0 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.1.0 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.1.0 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.1.0 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.1.0 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.1.0 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.8.1.0 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.8
4.2 其实,我第一次安装的时候失败了。在试运行samples的时候报错test.c:1:10: fatal error: freeimage.h no such file or directory。解决方法 sudo apt-get install libfreeimage3 libfreeimage-dev。
4.3 时隔半年后,服务器上NVIDIA-docker没办法使用。经查是driver自动升级了,在同事的帮忙下重新卸载有冲突的driver并重新安装了一个。在验证cuDNN是否安装成功时遇到了以下报错信息。
xxx@gpu8010:~/cudnn_samples_v8/mnistCUDNN$ ./mnistCUDNNExecuting: mnistCUDNNcudnnGetVersion() : 8100 , CUDNN_VERSION from cudnn.h : 8100 (8.1.0)Host compiler version : GCC 7.5.0ERROR: cuda failure (unknown error) in error_util.h:91Aborting...
目前找到了三种解决方法:1.重启电脑(链接2);2.重新安装;3.将主板BIOS设置中的“Windows UEFI mode”改为“Other OS”。
本想优先尝试方法3,但是服务器的BIOS没找到入口。
对于方法2,我尝试了将第一种方式cp到指定文件夹下的文件都转移到备份文件夹下,再用sudo dpkg -i 安装3个deb文件。但安装完之后遇到同样报错,且/usr/local/cuda/文件夹下,未找到对应的可用文件。
后面想先解决nvidia-docker2的安装,回头再看这个问题,该问题也解决了。
