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

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)打开,【非常详细】Ubuntu18.04安装显卡驱动和CUDA,CUDNN流程和踩坑记录_第1张图片
点开附加驱动【非常详细】Ubuntu18.04安装显卡驱动和CUDA,CUDNN流程和踩坑记录_第2张图片可见在这里就可以方便的安装显卡驱动。如果刚装好系统,应该会使用底下那个nouveau,nouveau不是英伟达提供的,是民间大佬写的适配英伟达显卡的驱动,只是浏览屏幕的话够用,单位是我们要深度学习,就需要使用英伟达的驱动了。我这里是有几个英伟大驱动的选项的,如果没有,可以执行

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

第三行是显示ubuntu推荐的驱动,其实就是软件和更新里显示的那几个选项。
【非常详细】Ubuntu18.04安装显卡驱动和CUDA,CUDNN流程和踩坑记录_第3张图片
再重新打开 软件和更新,或者重启,就会出现了。

这里点击一下460那个,注意不是server服务器版本的,然后点应用更改,等十几分钟,重启,就完成了安装了。
在终端中输入nvidia-smi,弹出以下信息表示显卡驱动安装成功
【非常详细】Ubuntu18.04安装显卡驱动和CUDA,CUDNN流程和踩坑记录_第4张图片一般来说,一个新的系统完全按照上面的指令敲下来,一定可以成功,如果报错请验证是否每一行都一样。

3、安装CUDA

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

-------------------------以下是用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,
【非常详细】Ubuntu18.04安装显卡驱动和CUDA,CUDNN流程和踩坑记录_第5张图片根据下方框里的命令一行一行执行即可,中途不要有任何别的操作。
在执行完这几条指令后,在终端输入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正常安装、运转了
【非常详细】Ubuntu18.04安装显卡驱动和CUDA,CUDNN流程和踩坑记录_第6张图片

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

你可能感兴趣的:(深度学习,ubuntu,cuda,linux)