​对于做深度学习的环境而言,我们需要理顺以下之间的关系。

就比如PyTorch框架,版本越高,对于显卡算力的要求就会越高,显卡算力上去了,CUDA的版本也要跟上去,CUDA版本上去了,驱动版本也要跟上。。。

我个人而言一般会按照高版本的驱动+低版本的CUDA+与CUDA对应的cudnn+与CUDA对应的PyTorch这样的顺序去配置环境。

CUDA与驱动的对应关系

​但是其中会有玄学问题,自行探索!

多百度,都会解决的。

驱动

​遇到实在解决不了的问题,最简单的方法就是全部清除干净,重新上路。如果是新电脑第一次配置可以跳过清除操作。

# 卸载CUDA,对应好自己的版本号
sudo /usr/local/cuda-11.1/bin/cuda-uninstaller
sudo rm -rf /usr/local/cuda-11.1/

# 卸载驱动
sudo /usr/bin/nvidia-uninstall
sudo apt-get --purge remove nvidia*
sudo apt-get purge nvidia*
sudo apt-get purge libnvidia*
sudo apt-get autoremove

# 确保不输出任何内容
sudo dpkg --list | grep mvidia*

# 确保禁用了开源驱动nouveau,理论上正常安装NVIDIA官方驱动会自动禁用
lsmod | grep nouveau
# 无输出即代表禁用成功

​其实CUDA会自带驱动,但是一般都是先装上驱动,再去安装CUDA,在安装CUDA的过程中取消安装CUDA自带的驱动。

当然也可以直接驱动和CUDA一起安装

# 对应好自己的卡下载对应驱动
下载地址:https://www.nvidia.cn/Download/index.aspx?lang=cn
# 下载好之后进入到文件所在目录,是一个run后缀的文件,加上执行权限
sudo chmod a+x NVIDIA-Linux-x86_64-470.82.00.run
sudo ./NVIDIA-Linux-x86_64-470.82.00.run
# 完成后重启一下
sudo reboot
# 测试一下,看看是否输出信息
nvidia-smi

CUDA

# 下载CUDA,下载run文件,不要deb文件,deb文件会在安装过程中替换掉已安装的驱动
下载地址:https://developer.nvidia.com/cuda-toolkit-archive

# 下载好之后进入到文件所在目录,是一个run后缀的文件,加上执行权限
sudo chmod a+x cuda_11.1.0_455.23.05_linux.run
sudo ./cuda_11.1.0_455.23.05_linux.run
# 如果是已经安装好驱动了,记得安装CUDA的时候取消安装驱动

# 安装完成后查看一下环境变量,理论上会自动在末尾添加
sudo vim ~/.bashrc
# 如果没有,记得自己追加,对应好版本
export PATH=/usr/local/cuda-11.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# 更新环境变量
source ~/.bashrc

# 测试版本
nvcc -V

#编译并测试设备 deviceQuery:
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

#编译并测试带宽 bandwidthTest:
cd ../bandwidthTest
sudo make
./bandwidthTest

NVIDIA三件套环境配置_CUDA

cudnn

# 下载对应CUDA版本的cudnn,需要提前注册
下载地址:https://developer.nvidia.com/rdp/cudnn-archive
# 下载如下文件:

NVIDIA三件套环境配置_CUDA_02

# 解压后,进行文件替换
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 /usr/local/cuda/lib64/libcudnn*
# 安装deb包
sudo dpkg -i libcudnn8_8.0.5.39-1+cuda11.0_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.5.39-1+cuda11.0_amd64.deb
sudo dpkg -i libcudnn8-samples_8.0.5.39-1+cuda11.0_amd64.deb

# 完成后测试
cd /usr/src/cudnn_samples_v8/mnistCUDNN
sudo make
./mnistCUDNN
# 如图,成功

NVIDIA三件套环境配置_CUDA_03

问题汇总

运行sudo dpkg --list | grep mvidia*还有输出

英伟达的相关包还没删干净,对照输出的还剩的包,挨个删干净。

# 重复执行
sudo apt-get --purge remove xxx
# 最终确保运行以下命令确保无输出
sudo dpkg --list | grep mvidia*

运行lsmod | grep nouveau无输出,但还提示让禁用

理论上驱动会自行禁用nouveau开源驱动,但玄学问题,你懂的。

# 进行手动爆破
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
# 添加以下内容
blacklist nouveau options nouveau modeset=0
# 执行该命令实现更新
sudo update-initramfs -u
# 再次安装NVIDIA驱动即可,安装完成后立即重启

Ps:实现更新后再次安装驱动完成后可能会黑屏,稍等一下。再强制重启。

如果无法进入图形界面,Ctrl+Alt+F1切换到字符界面,Ctrl+Alt+F7切换到图形界面

提示缺少gcc g++ make等包

依次安装即可,常见于新系统。

建议安装完成后装一下build-essential依赖包​​sudo apt-get install build-essential​