Ubuntu上安装NVIDIA显卡驱动和CUDA和cuDNN库
最近需要在用Pytorch做深度学习,为了加快训练速度,需要用到GPU运算,故在此记录一下安装过程。
我的本机环境: * Ubuntu 18.04.3 LTS * GeForce RTX 2080s
检查BIOS启动项
- 在开机启动项的Security选项中检查UEFI是否开启,如果开启的话请立马关掉它(重要)
- 在开机启动项的Boot选项中检查Secure Boot是否开启,如果开启的话请立马关掉它(重要),对于有的BIOS,只要删除Secure Boot Key就好了。
禁用 nouveau
运行命令 1
sudo gedit /etc/modprobe.d/blacklist.conf
1
2
3
4
5
6
7
8
9blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb1
sudo update-initramfs -u
1
reboot
1
lsmod | grep nouveau
安装显卡驱动
在NVIDIA官方选择对应驱动,然后下载:
在安装驱动之前,应该卸载原有的NVIDIA驱动程序 1
sudo apt-get remove --purge nvidia*
NVIDIA-Linux-x86_64-430.50.run
为了安装新的NVIDIA驱动程序,我们需要停止当前的显示服务器。最简单的方法是使用telinit命令更改为运行级别3。执行以下linux命令后,显示服务器将停止,因此请确保在继续之前保存所有当前工作(如果有): 1
sudo telinit 3
1
chmod a+x NVIDIA-Linux-x86_64-430.50.run
1
sudo ./NVIDIA-Linux-x86_64-430.50.run --no-opengl-files
参数介绍: * --no-opengl-files 只安装驱动文件,不安装OpenGL文件。这个参数最重要 * --no-x-check 安装驱动时不检查X服务 * --no-nouveau-check 安装驱动时不检查nouveau
后面两个参数可不加。
安装驱动中注意,pre-install script failed这个提示没什么关系,之后的warning提示unable to find a suitable destination to install 32-bit compatibility libraries也没关系,都选ok,在询问是否修改x-configuration,请选择默认的no,选择yes会导致重启后无法进入系统。
使用nvidia-smi命令测试
英伟达系统管理接口(NVIDIA System Management Interface, 简称 nvidia-smi)是基于NVIDIA Management Library (NVML) 的命令行管理组件,旨在(intened to )帮助管理和监控NVIDIA GPU设备。
驱动安装完成后,启动电脑,之后就能用nvidia-smi命令判断驱动是否安装成功 1
nvidia-smi
若出现上图中的结果则说明英伟达驱动安装成功。
安装CUDA10.1
CUDA是什么?
>> CUDA,Compute Unified Device Architecture的简称,是由NVIDIA公司创立的基于他们公司生产的图形处理器GPUs(Graphics Processing Units,可以通俗的理解为显卡)的一个并行计算平台和编程模型。 通过CUDA,GPUs可以很方便地被用来进行通用计算(有点像在CPU中进行的数值计算等等)。在没有CUDA之前,GPUs一般只用来进行图形渲染(如通过OpenGL,DirectX)。
下载地址,选择对应版本的cuda安装包,我这里选择的是runfile
类型的,不要选择使用deb
版本,安装CUDA时一定使用runfile文件,这样可以进行选择不再安装驱动。
在安装界面,注意选择不安装显卡驱动(按enter键取消选择)
。之后,打开/usr/local文件夹,我们会发现多了cuda和cuda10.1这两个文件夹,如下所示:
添加环境变量
运行sudo vim /etc/profile
,末尾加上: 1
2
3export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}source /etc/profile
使变量起效。
判断CUDA安装成功
运行一下代码 1
2
3cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
在CUDA安装之后,我们其实已经可以用PyTorch判断是否支持GPU了,进入python控制台: 1
2import torch
print(torch.cuda.is_available())
CUDA与cuDNN的关系
cuDNN是GPU加速计算深层神经网络的库。把CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。
安装cuDNN
官方安装cuDNN指南
从官方安装指南可以看出,只要把cuDNN文件复制到CUDA的对应文件夹里就可以,即是所谓插入式设计,把cuDNN数据库添加CUDA里,cuDNN是CUDA的扩展计算库,不会对CUDA造成其他影响。
首先去官网下载cuDNN,需要注册一个账号才能下载。注意要选择对应版本的cuDNN Library for Linux(与CUDA 10.1对应):
下载后进行解压: 1
tar -zxvf cudnn-10.1-linux-x64-v7.6.2.24.tgz
1
2cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include #复制头文件1
2
3
4
5
6
7
8
9cd ..
cd lib64
sudo cp libcudnn* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.7.6.2
sudo ln -sf libcudnn.so.7.6.2 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
sudo ldconfig
参考文章: * https://blog.csdn.net/oTengYue/article/details/79506758 * https://shomy.top/2016/12/29/gpu-tensorflow-install * 简书——CUDA与cuDNN