实验室工作站被多人使用导致需求不同的cuda版本,一直没找到一个完全完整靠谱的教程,这是我参考几个博客完成测试的全过程记录,方便以后操作,无任何商业用途,如有侵权,请联系删除。
注:其中好多摘录自其他博客,我在操作过程中大部分未保存结果,只能用其他博客中我认为合适的图片等代替
安装前需先确定显卡驱动、CUDA、cuDNN等之间的对应关系。由于我的帐户没有管理员权限,不能安装显卡驱动,只能根据现有驱动的版本来选择CUDA版本,输入指令 cat /proc/driver/nvidia/version 查看当前服务器版本号
文中目录结构解释如下:
用户名为zb;
目录 /home/zb/cuda/用于存放不同的cuda版本,每安装一个版本的CUDA就在该目录下新建一个文件夹,如cuda-8.0,并安装在相应的目录下;
安装包下载到 /home/zb/cuda/ 目录下,安装完成后就删除安装包;
目录 /home/zb/cuda/tem/ 目录用于cuDNN的解压,安装完成后就删除该目录;
注意:不同版本cuda对应的NVIDIA驱动版本
CUDA与Driver的对应版本:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
cuda10.0与Linux系统以及GCC的对应关系:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
cuda的下载地址: https://developer.nvidia.com/cuda-toolkit-archive
cudnn的下载地址: https://developer.nvidia.com/rdp/cudnn-archive
注:由于下载cuDNN需要登录帐户,直接在终端用指令下载可能会失败,可以先在windows上注册个帐户下载好再上传到服务器。(使用MobaXterm等软件连接服务器后可以很方便地把windows上的文件通过拖动的方式上传到服务器上)
先执行下面的命令安装相关依赖,否则会出现 Missing recommended library 错误。
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
可以尝试执行 sudo apt-get update 和 sudo apt-get upgrade --fix-missing,如果报如下图错误或者还是无法安装相关依赖。
解决方案为手动下载或者更换软件源(我的选择)
(1)手动下载
在使用上述方法后还是无法下载,出现的报错信息如下所示:
直接在浏览器中尝试打开无法下载的这个deb链接,自动弹出了下载页面,如下图所示:
那就很简单了,直接下载保存,默认应该是直接下载到“下载”文件夹下了。然后,打开该文件所在目录,打开一个终端,执行如下命令,将下载的deb文件(依据自己包的名称进行修改)放到ubuntu apt-get下载文件存放的目录(即 /var/cache/apt/archives )下,这样在install的时候,就能被自动检测到了。
sudo mv libflite1_2.1-release-3_amd64.deb /var/cache/apt/archives
完成后,再次执行安装命令:
sudo apt install ffmpeg
看下一个方法吧。
(2)更换软件源
如果链接真的不存在,那有可能是链接更新了,但是源里的链接没有同步更新了导致的。既然这个源行不通,那我们就换一个源试试。打开软件和更新,在ubuntu软件页面下,可以看到有下载自这个选项:
现在使用的源在这里名为“中国 的服务器”,点开下拉列表,选择其他站点,可以看到有很多选项:
更换后在终端执行如下命令进行更新:sudo apt-get update
如果还是没法安装,就多换几次源尝试,总有一个适合你(当然也可能都不行,直接放弃)
回到正题,安装cuda
在安装包所在目录下输入指令 sudo sh XXX 进行安装,如:sudo sh cuda_11.4.0_470.42.01_linux.run
注:如图中一样选择就行。
按空格根据需要选择要安装的模块,有“X”的表示安装,没有的表示不安装,我这里已经安装过418.116的显卡驱动了,所以选择不安装驱动 (最终的结果和此处的图一致,如果不一致请保持一致的选择):
按上下键移动到CUDA Toolkit 10.1上,然后按“A”键,出现:
全部不安装并更改Toolkit Install Path:
再返回主界面然后选择Options->Library install path:
然后确定,返回选择Install
使用指令tar -xzvf /home/zb/cuda/cudnn-8.0-linux-x64-v7.1.tgz -C /home/zb/cuda/tem/ 将cuDNN解压到tem文件夹并执行以下指令
cp /home/zb/cuda/tem/cuda/include/cudnn.h /home/zb/cuda/cuda-8.0/include/
cp /home/zb/cuda/tem/cuda/lib64/libcudnn* /home/zb/cuda/cuda-8.0/lib64
chmod a+r /home/zb/cuda/cuda-8.0/include/cudnn.h /home/zb/cuda/cuda-8.0/lib64/libcudnn*
在安装了多个cuda版本后,可以在/usr/local/目录下查看自己安装的cuda版本。
这里,cuda-11.0和cuda-11.4就是我们安装的两个cuda版本了,而cuda是一个软链接,它指向我们指定的cuda版本(注意上面在设置环境变量时,使用的是cuda,而不是cuda-11.0和cuda-11.4,这主要是为了方便我们切换cuda版本,可以让我们不用每次都去该环境变量的值)
可以使用stat命令查看当前cuda软链接指向的哪个cuda版本
可以看到,文件类型是symbolic link,而指向的目录正是/usr/local/cuda-11.4,当我们想使用cuda-11.0版本时,只需要删除该软链接,然后重新建立指向cuda-11.0版本的软链接即可(注意名称还是cuda,因为要与bashrc文件里设置的保持一致)
sudo rm -rf cuda
sudo ln -s /usr/local/cuda-11.4 /usr/local/cuda
想切换其他版本的cuda,只需要改动建立软链接时cdua的正确路径即可。
(1)不使用上述的多个版本切换
修改个人用户目录下的.bashrc文件,sudo gedit ~/.bashrc
export PATH=/home/zb/cuda/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/home/zb/cuda/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
(2)使用上述的多个版本切换
修改个人用户目录下的.bashrc文件,sudo gedit ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
最后输入指令 source .bashrc 使新配置的环境变量生效.
查看cuda版本 : nvcc -V
查看位置 : which nvcc
查看NVIDIA动态使用情况: watch -n 1 nvidia-smi
cuda 版本 : cat /usr/local/cuda/version.txt
cudnn 版本 : cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
NVIDIA 驱动版本 : cat /proc/driver/nvidia/version
1,https://blog.csdn.net/hizengbiao/article/details/88625044
2,https://blog.csdn.net/ksws0292756/article/details/80120561
3,https://blog.csdn.net/qq_34638161/article/details/80845366
4,https://blog.csdn.net/ksws0292756/article/details/80120561
5,https://blog.csdn.net/weixin_44120025/article/details/122317808
6,https://www.cnblogs.com/Uni-Hoang/p/12901597.html