由于深度学习经常使用不同版本的框架,所以需要安装多个版本的cuda和cudnn,这里记录一下安装过程。
在进行后续的本地安装之前,最好先使用网络安装方式进行安装,这两者不会冲突。
NOTE: 最好要么只用网络安装,要么只用本地安装,否则很容易产生软件包冲突。
如果要使用网络安装,可以使用我的脚本
cuda和驱动版本必须匹配,否则会出现问题,所以在安装cuda之前,需要查看cuda和驱动版本匹配表。 一般来说,高版本的驱动可以兼容低版本的cuda,但是低版本的驱动不一定能兼容高版本的cuda。
可以在官方的cuda与驱动版本匹配表查看cuda与驱动版本的匹配情况。
在CUDA Toolkit Archive网站上下载所需要的版本,这里以11.3.1为例。
下载deb(local)版本的cuda包。
安装cuda,这里以11.3.1为例。一般来说最后一位数字不需要安装,因为是补丁版本,所以这里是cuda-11-3。 也可以安装cuda-toolkit-11-3,这个包不会安装nvidia驱动,只会安装cuda工具包,如果已经安装了nvidia驱动,可以使用这个包。 推荐先使用cuda-toolkit-11-3,如果运行出项,再使用cuda-11-3。这样可以减少依赖冲突。 安装的版本模式是cuda-M-m或者是cuda-toolkit-M-m,M是主版本号,m是次版本号,这里以11.3.1为例。
具体情况可以查看元包详情
按照网页上的命令安装,但是命令需要修改一下。
修改成如下命令:
wget https://xxxxx/cuda-repo-xxx.deb
sudo apt install ./cuda-repo-xxx.deb
sudo apt update
#sudo apt install cuda-11-3 # 这里的cuda-11-3中的11-3是版本号,不需要安装最后一位数字,这个包同时会安装nvidia驱动
sudo apt install cuda-toolkit-11-3 # 只安装cuda工具包,不会安装nvidia驱动,避免Nvidia驱动冲突
在cudnn archive下载和cuda版本对应cudnn版本,这里以8.2.1为例。
注意⚠️:必须要下载tgz格式的安装包。
解压cudnn安装包,这里以8.2.1为例。
unar cudnn-11.3-linux-x64-v8.2.1.32.tgz
cd cudnn-11.3-linux-x64-v8.2.1.32/
sudo mv ./include/* /usr/local/cuda-11.3/include/
sudo mv ./lib64/* /usr/local/cuda-11.3/lib64/
在NCCL的下载页面或旧版本下载页面下载和cuda版本对应的NCCL版本,这里以2.9.9为例。
注意⚠️:必须要下载os无关的安装包。
解压NCCL安装包,这里以2.9.9为例。
unar nccl_2.9.9-1+cuda11.3_x86_64.txz
cd nccl_2.9.9-1+cuda11.3_x86_64/
sudo mv ./lib/* /usr/local/cuda-11.3/lib64/
sudo mv ./include/* /usr/local/cuda-11.3/include/
我这里使用fish-config
仓库中的cuda-home
函数切换cuda版本,这里以11.3.1为例。
cuda-home /usr/local/cuda-11.3
运行nvidia-smi
出现 NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
错误。
解决方法:重新安装驱动和dkms,其中xxx
为驱动版本号。
sudo apt install --reinstall nvidia-driver-xxx nvidia-dkms-xxx