借鉴网址:https://blog.csdn.net/weixin_43804210/article/details/108003802
一、cuda安装:
cuda下载网址:https://developer.nvidia.com/cuda-downloads
开始安装:sudo sh cuda_10.2.456_396.37_linux.run
cuda安装时,如果已经有nvidia驱动了,在安装cuda的时候不要选择驱动Driver。
注意: 在安装第一个cuda版本的时候,可以选择默认符号链接:symbolic link…:选择yes.
在安装第二个或者后面cuda版本的时候,符号链接要选择no,因为符号链接是直接在/usr/local/中创建一个cuda版本的软连接:/usr/local/cuda
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n #添加链接**注意这个连接,如果你之前安装过另一个版本的cuda,除非你确定想要用这个新版本的cuda,否则这里就建议选no,因为指定该链接后会将cuda指向这个新的版本**
cuda版本切换和环境变量设置
1、在 ~/.bashrc 文件中设置cuda的环境变量内容如下,这样是可以做到cuda版本切换的,通过更换软连接方式:
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
2、如在 /usr/local中的软连接cuda指向的目录正是/usr/local/cuda-10.2,当我们想使用cuda-11.2版本时,只需要删除该软链接,然后重新建立指向cuda-11.2版本的软链接即可(注意名称还是cuda,因为要与bashrc文件里设置的保持一致)
这里需要在/usr/local目录下进行下面的操作
sudo rm -rf cuda
sudo ln -s /usr/local/cuda-9.2 /usr/local/cuda
验证cuda是否安装成功:
为了验证CUDA,可以进入~目录中的cuda样例目录,样例一般被下载在Home目录下,编译项目:
编译完成后,进入bin目录中的其他文件,运行编译好的例程,执行 ./simpleMultiGPU 可执行文件命令,如果出现下面的结果则验证成功。
二、cudnn安装和版本更换
cudnn下载网址:https://developer.nvidia.com/rdp/cudnn-archive
经验证: cuda10.2版本对cudnn8.x.x以上的版本不支持,虽然官网也有相应的包,但是下载之后安装不成功,所以安装cudnn7.x.x版本,此处选择cudnn7.6.5版本。
切换cuda版本后,也要更换相应的cudnn版本。
cudnn包下载好之后,解压cudnn包:
tar -xzvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
因为cudnn的压缩包解压后是一个cuda文件夹,如果之前已经有解压出来的cuda文件夹,我一般是放在home目录下,需要先将先前的cuda文件夹删除,然后再解压新的cudnn包得到新的cuda文件夹。
sudo rm -rf cuda
tar -xzvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
最后将解压后的新的cuda文件夹中的内容复制到 /usr/local/cuda中的cuda文件夹的相关文件夹。操作如下,复制后即完成cudnn安装。
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
第一种验证方法,这种方法对于cudnn8.0以上的版本可能不适用,可能无法验证安装的cudnn是否可以使用,巨坑!!!已经过时,但是对于7.x版本还是可以适用:
在终端输入:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
如下显示即安装成功:
第二种验证方法,对于cudnn8.0以上的版本适用:
参考网址:https://blog.csdn.net/weixin_33158887/article/details/112296197
cudnn的卸载
如果是用deb包安装的cudnn,干净卸载,删除干净再重新安装才行,要把cudnn文件删除干净:
sudo rm -rf /usr/include/cudnn.h
sudo rm -rf /usr/lib/x86_64-linux-gnu/libcudnn*
如果你不知道到底删除干净没有,可以找找这个文件libcudnn.so.7,我这里要删除的是cudnn7.3.1版本的:
whereis libcudnn.so
如果只是显示下面的内容,说明 /usr/lib/x86_64-linux-gnu文件夹中的libcudnn的相关文件已经被删除干净了。
开始安装deb包的cudnn:
sudo dpkg -i libcudnn8_8.2.4.15-1+cuda11.4_amd64.deb
sudo dpkg -i libcudnn8-dev_8.2.4.15-1+cuda11.4_amd64.deb
sudo dpkg -i libcudnn8-samples_8.2.4.15-1+cuda11.4_amd64.deb
验证deb包安装的cudnn:
cp -r /usr/src/cudnn_samples_v8/ $HOME
cd ~/cudnn_samples_v8/mnistCUDNN
sudo make clean
sudo make
sudo ./mnistCUDNN
如果出现下面信息则证明deb包安装的cudnn安装成功:
Test passed!
注意:使用多个cudnn冲突的处理:
使用cudnn编译ROS、Autoware相关的代码时,可能出现如下错误,说明是有安装了多个cudnn,比如一个从deb包安装的,一个从源码安装并指定到cuda的,在编译时会产生冲突。解决办法是将其中一个删除,比如删除deb包安装的,删除方法可参考上面的cudnn卸载: