【非常详细】Ubuntu18.04安装显卡驱动和CUDA,CUDNN流程和踩坑记录

2023-05-16

1、预准备

在一个刚安装好的、全新的ubuntu18.04上,按下Ctrl+Al+T打开终端,依次输入以下三条指令,安装好gcc和cmake(gcc是GNU compiler collection,用来编译c和c++程序的,cmake也是)

sudo apt update
sudo apt-get install build-essential 
sudo apt-get install cmake

在安装环境的全过程中,必须时刻对flag保持高度关注。所谓flag就是这一步操作的结果。比如刚刚用install指令安装好了两个东西,而linux不像windows或者pip那样会在安装好后提醒你successfully install XXX,所以我们必须手动观察flag,确认这一步操作有没有成功

执行

$ gcc --version
输出
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ cmake --version
输出
cmake version 3.10.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

表示这两个软件已经正常安装了

2、安装显卡驱动

所谓驱动,就是沟通显示屏、CPU、GPU的桥梁,有了显卡驱动才可以让电脑上正常显示内容。
网上搜索的话会有好几种安装方式,但是建议不要用命令行来安装,实测会出现非常多意外的错误,初学、省事的装驱动做法是打开桌面左下角的启动器(就是那9个点),找到“软件和更新”(softwares and updates)打开,在这里插入图片描述
点开附加驱动在这里插入图片描述可见在这里就可以方便的安装显卡驱动。如果刚装好系统,应该会使用底下那个nouveau,nouveau不是英伟达提供的,是民间大佬写的适配英伟达显卡的驱动,只是浏览屏幕的话够用,单位是我们要深度学习,就需要使用英伟达的驱动了。我这里是有几个英伟大驱动的选项的,如果没有,可以执行

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
ubuntu-drivers devices

第三行是显示ubuntu推荐的驱动,其实就是软件和更新里显示的那几个选项。
在这里插入图片描述
再重新打开 软件和更新,或者重启,就会出现了。

这里点击一下460那个,注意不是server服务器版本的,然后点应用更改,等十几分钟,重启,就完成了安装了。
在终端中输入nvidia-smi,弹出以下信息表示显卡驱动安装成功
在这里插入图片描述一般来说,一个新的系统完全按照上面的指令敲下来,一定可以成功,如果报错请验证是否每一行都一样。

3、安装CUDA

20211231更新: 不推荐使用deb安装cuda,会一口气把显卡驱动也给你装上, 容易导致后续的问题. 请使用runfile进行安装.参考https://blog.csdn.net/h3c4lenovo/article/details/119003405
如果要卸载已装的cuda,
cd /usr/local/cuda/bin
./cuda-uninstaller

20221122更新:请分清楚deb安装和runfile安装的区别,参考https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#choose-installation-method
“CUDA Toolkit可以使用两种不同的安装机制之一安装:特定于发行版的包(RPM和Deb包),或独立于发行版包(runfile包)。
独立于发行版的包具有跨更广泛的Linux发行版工作的优势,但不会更新发行版的本地包管理系统。特定于发行版的包与发行版的本机包管理系统交互。如果可能,建议使用特定于发行版的软件包。”
再精简一下就是,deb安装包会利用ubuntu18.04这个特定发行版系统里面的一些东西来完成cuda的构建,而runfile不会,任何x86架构的linux都可以装同一个runfile

在后期想以deb形式安装TensorRT时,requires that the CUDA toolkit and cuDNN have also been installed using Debian or RPM packages. 也就是要求的你的cuda当初就是用deb安装的。经过我的实测,runfile安装的cuda,在再安装trt时会报错
tensorrt : 依赖: libnvinfer8 (= 8.0.1-1+cuda11.3) 但是它将不会被安装
依赖: libnvinfer-plugin8 (= 8.0.1-1+cuda11.3) 但是它将不会被安装
依赖: libnvparsers8 (= 8.0.1-1+cuda11.3) 但是它将不会被安装
依赖: libnvonnxparsers8 (= 8.0.1-1+cuda11.3) 但是它将不会被安装
依赖: libnvinfer-bin (= 8.0.1-1+cuda11.3) 但是它将不会被安装
依赖: libnvinfer-dev (= 8.0.1-1+cuda11.3) 但是它将不会被安装
依赖: libnvinfer-plugin-dev (= 8.0.1-1+cuda11.3) 但是它将不会被安装
依赖: libnvparsers-dev (= 8.0.1-1+cuda11.3) 但是它将不会被安装
依赖: libnvonnxparsers-dev (= 8.0.1-1+cuda11.3) 但是它将不会被安装
依赖: libnvinfer-samples (= 8.0.1-1+cuda11.3) 但是它将不会被安装
依赖: libnvinfer-doc (= 8.0.1-1+cuda11.3) 但是它将不会被安装

所以从长远考虑,最好还是用deb来装cuda

-------------------------以下是用deb安装的过程
我选CUDA版本的原则是,要能够跑gpu版本pytorch 1.7.0,因为大多数github项目都基于torch1.7,此外CUDA还要能够安装绝大多数的深度学习框架,比如tf,paddle等。再者,我的显卡是3080ti,算力是8.6,必须安装11.0及以上的CUDA才可以,此前的CUDA不支持8算力显卡的加速。最终我选择了11.0作为CUDA版本。
首先执行sudo apt-get install linux-headers-$(uname -r) 验证系统是否安装了kernel header和 package development。然后进入https://developer.nvidia.com/cuda-11.0-update1-download-archive,
在这里插入图片描述根据下方框里的命令一行一行执行即可,中途不要有任何别的操作。
在执行完这几条指令后,在终端输入sudo gedit ~/.bashrc
在文本最后输入

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.0/lib64
export PATH=$PATH:/usr/local/cuda-11.0/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-11.0

11.0要改成你装的cuda版本。
最后执行source ~/.bashrc,就成功把CUDA加入环境变量了,测试一下CUDA是否安装成功
执行nvcc -V,出现这个就说明安装成功了在这里插入图片描述
但此时执行nvidia-smi会报错Failed to initialize NVML: Driver/library version mismatch,这是因为我们使用了deb一站式安装CUDA11.0,把450版本的显卡驱动也装上了,460的显卡驱动会被自动卸载。通过下面这个指令监控一下当前显卡驱动安装的所有的软件包:

sudo dpkg --list | grep nvidia

可以看到既有460也有450的,而且460那几个包的状态都变成了rc,这意味着这个包刚被remove卸载了,但是还残留着配置文件configurations,其他450的包状态都是ii,意味着这个包刚被install安装,而且已经installed装好了。可见目前的驱动软件其实已经变成了450,但是为什么nvidia-smi还是会报错呢?这是因为,软件变450了,但是系统的配置文件还保持着460,执行
cat /proc/driver/nvidia/version,可以看到
在这里插入图片描述英伟大显卡驱动竟然还是460!
所以,下面要做的事就是卸载所有显卡驱动软件包,再重装显卡驱动
执行下面的指令卸载所有显卡驱动软件包

sudo apt-get --purge remove nvidia-*
sudo apt-get purge nvidia*
sudo apt-get purge libnvidia*

验证一下有没有卸载干净:sudo dpkg --list | grep nvidia输出为空,表示全部卸载了。
重启一下,再打开“软件与更新”,会发现显卡驱动又回到了而nouveau,再次执行
cat /proc/driver/nvidia/version,会发现文件目录不存在,说明真的卸载干净了。
只要在“软件与更新”里勾选460,应用更改,重启,nvidia-smi就可以成功了!

最后,验证一下cuda可否运转:

cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./1_Utilities/deviceQuery

出现以下结果,说明cuda正常安装、运转了
在这里插入图片描述

4、其他CUDA安装方法(暂未尝试,试了再更)

	1、先deb装cuda,不额外装显卡驱动
	2、先deb装cuda,卸载450,再装460
	3、先装460,再run装cuda

5、cuDNN安装

https://www.cnblogs.com/xiaowk/p/15205506.html

参考目录:(可以学到很多)
https://www.jianshu.com/p/158ae8fcdb4a
https://blog.csdn.net/zhiman_zhong/article/details/91491780
https://blog.csdn.net/qq_42518956/article/details/108358254
https://blog.csdn.net/zywvvd/article/details/115500412

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【非常详细】Ubuntu18.04安装显卡驱动和CUDA,CUDNN流程和踩坑记录 的相关文章

随机推荐