Ubuntu配置显卡驱动,CUDA及cuDNN

Ubuntu配置GPU驱动,CUDA及cuDNN

CUDA和cuDNN的安装网上有许多教程,但每一个教程都没能让我简洁有效地安装成功,尤其一些帖子忽视了某些重要细节,让整个安装过程更复杂。
我尝试用先给出解决方案,再解释过程中遇到的困惑的方式写本帖。本文力求使文章中的命令通用,如有必要,以Ubuntu18.04系统, GeForce RTX 3090显卡为例进行说明。


文章目录

  • Ubuntu配置GPU驱动,CUDA及cuDNN
  • 一、安装GPU驱动
    • (一) 禁用nouveau
    • (二) 驱动安装
  • 二、安装CUDA
  • 三、安装cuDNN
  • 总结
  • 参考


提示:以下是本篇文章正文内容,下面案例可供参考

一、安装GPU驱动

(一) 禁用nouveau

  • 为了进入黑名单配置,在终端输入:
sudo vim /etc/modprobe.d/blacklist.conf 
  • 为了禁用nouveau,在blacklist.conf文件最后添加下面两行:
blacklist nouveau
options nouveau modeset=0
  • 为了使禁用生效,在终端输入:
update-initramfs -u #更新内核
  • 重启电脑,在终端输入:
lsmod | grep nouveau

若无输出,则禁用成功。

(二) 驱动安装

  • 先卸载已有驱动,在终端输入:
apt-get purge nvidia* #卸载已有驱动
  • 为了查询Ubuntu当前系统推荐的驱动版本,在终端输入:
ubuntu-drivers devices #查询Ubuntu当前系统推荐的驱动版本

例如,输入上述命令后我的终端打印信息如下`
Ubuntu配置显卡驱动,CUDA及cuDNN_第1张图片

  • 为了安装驱动,在终端输入
sudo apt install {driver_version} #安装驱动

需要把命令行中的{driver_version}替换成对应版本,可以从上图中找。
例如,我使用的命令是 sudo apt install nvidia-driver-470

注:这里十分不推荐用 ubuntu-drivers autoinstall 命令,这个命令很可能会吃网卡驱动。

  • 然后重启电脑,然后为了测试驱动安装情况,在终端输入:
nvidia-smi #测试驱动安装情况

例如,看到如下图表示驱动安装成功。
Ubuntu配置显卡驱动,CUDA及cuDNN_第2张图片

二、安装CUDA

  • 进入官网

如上图所示,用nvidia-smi可以看到系统中安装的CUDA Version。我们在官网选择的CUDA version(Runtime API)应小于nvidia-smi中显示的CUDA Version(Driver API),原因可以查看这篇blog。
例如,我的CUDA driver version是11.4,我选择安装CUDA runtime version为11.3。
Ubuntu配置显卡驱动,CUDA及cuDNN_第3张图片

  • 选择完目标平台信息后,官网会给出安装指引,依次在终端输入命令行执行,即可安装成功。

Ubuntu配置显卡驱动,CUDA及cuDNN_第4张图片

若在输入sudo sh cuda....run后提示Existing package manager installation of the driver found. It is strongly recommended that you remove this before continuing.,选择continue

在下一步中去除driver项,之后选择install,如下图所示:
Ubuntu配置显卡驱动,CUDA及cuDNN_第5张图片

  • 安装完成后,设置环境变量。在终端输入:
sudo vim ~/.bashrc

然后在.bashrc文件中添加如下两行:

export PATH=/usr/local/cuda-11.3/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

同样的,文件路径记得自己核对一下。

  • 安装完成后,在终端输入如下命令验证
nvcc -V

若有类似如下输出,则证明安装完成。
Ubuntu配置显卡驱动,CUDA及cuDNN_第6张图片

三、安装cuDNN

  • 在官网下载安装文件,
    推荐直接下载完整的压缩包而不是deb文件。

Ubuntu配置显卡驱动,CUDA及cuDNN_第7张图片

  • 下载完成后,来到压缩包所在文件夹打开终端,在终端输入:
tar -zxvf {cuDNN_file_name} #	解压缩文件

需要把命令行中的{cuDNN_file_name}替换成相应压缩包的文件名,例如,我使用的命令是tar -xzvf cudnn-11.3-linux-x64-v8.2.1.32.tgz

  • 在终端输入
#把cuDNN的头文件和库复制到CUDA对应的文件夹中
sudo cp cuda/include/* /usr/local/cuda-11.3/include/
 
sudo cp cuda/lib64/* /usr/local/cuda-11.3/lib64/
#添加可执行权限
sudo chmod a+r /usr/local/cuda-11.3/include/cudnn.h
 
sudo chmod a+r /usr/local/cuda-11.3/lib64/libcudnn*

注意,命令行中的cuda-11.3需要根据自己CUDA的文件名相应改动。

  • 在终端输入
cat /usr/local/cuda-11.3/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

查看是否安装成功,若成功,有如下输出:
Ubuntu配置显卡驱动,CUDA及cuDNN_第8张图片
注:有的老版本用 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2来查看版本号,但我使用这条命令没有输出,是因为新版本cudnn版本号在cudnn_version.h中了。

总结

安装过程如上,期间参考了许多CSDN的优秀博文,但每台电脑有每台电脑的脾气,我的方法也许也是在自己的电脑上最适用。

接下来对上述一些步骤做解释。
1. 为什么要禁用nouveau?
关于什么是nouveau?感兴趣的同学可以参见维基。
总的来说,在Linux系统中,对于NVIDA显卡支持驱动主要两类:第一种是由Linux社区人员反开发的开源驱动,也就是nouveau,它被预装在ubuntu中;第二种是NVIDIA 公司自己开发的闭源驱动,即nvidia_driver。用官方的驱动能够更好地释放显卡的性能。而安装nvidia显卡驱动首先需要禁用nouveau,不然会碰到冲突的问题,导致无法安装nvidia显卡驱动。
2. 什么是CUDA,什么是cuDNN?
CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的流行caffe软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。
3. 为什么把cuDNN的文件复制到CUDA里就可以实现深度神经网络的高性能计算?
知乎用户Joe.Zhao的比喻很形象,摘录如下。

CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。
Ubuntu配置显卡驱动,CUDA及cuDNN_第9张图片
从官方安装指南可以看出,只要把cuDNN文件复制到CUDA的对应文件夹里就可以,即是所谓插入式设计,把cuDNN数据库添加CUDA里,cuDNN是CUDA的扩展计算库,不会对CUDA造成其他影响。

参考

[1] CUDA与cuDNN,Joe.Zhao
[2] Ubuntu16.04下安装cuda和cudnn的三种方法(亲测全部有效)
[3] Ubuntu安装显卡驱动
[4] Ubuntu下安装CUDA
[5] Ubuntu安装和卸载CUDA和CUDNN

你可能感兴趣的:(ubuntu,Nvidia,CUDA,ubuntu,综合资源)