Ubuntu 22.04安装NVIDIA驱动和CUDA的完整教程
Ubuntu 22.04安装NVIDIA驱动和CUDA的完整教程
本文将详细介绍在Ubuntu 22.04系统上安装NVIDIA驱动和CUDA的全过程,包括解决黑屏问题、安装NVIDIA驱动、卸载NVIDIA驱动、安装CUDA、安装Anaconda和PyTorch等步骤。
1、事前问题解决
在安装完Ubuntu之后,如果进入Ubuntu出现黑屏情况,一般就是NVIDIA驱动与Linux自带的不兼容,可以通过以下方式解决:
- 启动电脑,进入引导菜单,将光标移动到Ubuntu项,按键盘上的"E"键,进入GRUB页面
- 选择首单词为"linux"对应的行,将光标移动到该行的末尾(一般这行的倒数第2、3个参数为:"quiet splash"),在这行末尾空一个后输入:nomodeset,按下键盘的"Ctrl + X"或者F10启动,就能进入Ubuntu系统桌面了。
- 之后需要将系统自带的nouveau驱动加入系统黑名单中,输入:sudo gedit /etc/modprobe.d/blacklist.conf,在文件的末尾添加以下字段:blacklist nouveau,该操作就是将nouveau驱动加入系统黑名单
- 最后更新黑名单:sudo update-initramfs -u
2、安装NVIDIA驱动
接下来查询系统推荐的NVIDIA显卡版本号:
// 先执行这两行 cmd,否则可能出现 ubuntu-drivers devices 执行后没反映的现象
sudo apt update
sudo apt upgrade
// 查询系统建议安装的nvidia版本
ubuntu-drivers devices
/// 例如
wsx@wsx:~$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0 ==
modalias : pci:v000010DEd00002520sv00001043sd00001722bc03sc00i00
vendor : NVIDIA Corporation
model : GA106M [GeForce RTX 3060 Mobile / Max-Q]
driver : nvidia-driver-545-open - distro non-free
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-535 - distro non-free recommended // 建议安装版本
driver : nvidia-driver-470 - distro non-free
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-535-open - distro non-free
driver : nvidia-driver-535-server-open - distro non-free
driver : nvidia-driver-545 - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
然后首先确保BIOS的security boot是disable状态的,以华硕电脑为例,操作如下:
安装过程中可能在进入BIOS时找不到U盘启动项,这时可以尝试将电脑的Secure Boot Control关掉。具体的做法为:进入BIOS -> Advanced Mode -> Security -> Secure Boot -> Secure Boot Control -> Disabled。如下所示:
然后执行以下命令安装,最后需要执行reboot重启电脑(必须重启,否则后面执行nvidia-smi会报错):
sudo apt install nvidia-driver-535
reboot
重启之后执行nvidia-smi,正常情况下可以看到nvidia driver信息以及显卡信息:
注意,这里右上角所显示的cuda version是指当前nvidia所支持的cuda的最高版本,也就是说是可以兼容cuda 12.1的。nvidia-smi显示的的cuda version是当前驱动支持的最大cuda toolkit的版本。
CUDA有两种API,分别是运行时API和驱动API,即所谓的Runtime API与Driver API。[可参考:CUDA Compatibility]
nvidia-smi的结果除了有GPU驱动版本型号,还有CUDA Driver API的版本号,而nvcc -V的结果是对应CUDA Runtime API。CUDA Runtime API依赖CUDA Driver API。
使用conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia命令安装pytorch时,附带的CUDA和从官网安装的CUDA有何不同?一言以蔽之:前者是后者的子集,是pytorch所必须的那一部分子集,而像编译器nvcc等非必须的CUDA组件则没有。
Pytorch往往只需要使用CUDA的动态链接库使程序顺利运行,因为其中利用CUDA计算的部分是提前编译好的,就像常见的可执行程序一样,不需要重新进行编译过程,只需要其所依赖的动态链接库存在即可正常运行。
当两者同时安装时,pytorch深度学习环境会优先使用前者。当没有单独安装CUDA时,如果在安装pytorch时安装了CUDA子集,那么环境也是可以正常使用的,这在pytorch的源码中可以发现。因此建议使用深度学习环境的同学非必要不安装单独的CUDA,只需保持显卡驱动的正常更新即可。
参考:https://www.zhihu.com/question/622711856/answer/3339303390
3、卸载NVIDIA驱动方法
卸载NVIDIA驱动的方法:
sudo apt-get purge nvidia-*
sudo apt-get update
sudo apt-get autoremove
4、安装CUDA
CUDA版本与NVIDIA驱动的兼容关系可以参考:CUDA 12.5 Update 1 Release Notes
CUDA的下载地址:CUDA Toolkit Archive | NVIDIA Developer
这里我装12.1.1版本
选择runfile来安装,deb那个看起来命令太多了,吓人。。。
这里我在wget后面加一个-P参数可以制定安装文件夹路径,对应的在执行.run文件时也需要加上指定的路径才行:
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run -P Downloads/
sudo sh Downloads/cuda_12.1.1_530.30.02_linux.run
安装的时候记得去掉安装driver的选项,因为上面已经装过了。安装完成之后会出现:
然后添加系统环境变量,根据自己安装的实际版本修改:
export PATH=$PATH:/usr/local/cuda-12.1/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.1/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-12.1/lib64
然后输入nvcc -V来查看是否安装成功:
source .bashrc // 刷新刚才写入的环境变量
nvcc -V
Ubuntu安装NVIDIA显卡驱动、安装对应的CUDA_ubuntu安装nvidia显卡驱动-CSDN博客
接下来:
5、安装Anaconda
Download Anaconda Distribution | Anaconda
创建conda环境:
conda create -n name python=3.12
6、安装PyTorch
Start Locally | PyTorch
嫌弃ubuntu pip安装太慢的话,可以换一下国内的源:
cd ~
mkdir .pip
cd .pip
touch pip.conf
sudo chmod 755 pip.conf
gedit pip.conf
填入以下内容并保存,我这里选择aliyun的源:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
下载直接起飞~