如果你的机器显卡是集成显卡,或者是老旧版本,那么不支持GPU加速,只能使用CPU版本的Pytorch/Tensorflow !
本文的前提是你有一块好的Nvidia显卡。
1.如何查看电脑的显卡型号
在windows系统上,查看显卡型号的方法如下:
打开设备管理器->显示适配器
在ubuntu系统上,查看显卡型号的方法如下:
#terminal输入
lspci | grep -i vga
#将会得到序列号,我的是2489
01:00.0 VGA compatible controller: NVIDIA Corporation Device 2489 (rev a1)
#然后打开下面的链接,用刚刚的序列号,在咨询框中查询即可
http://pci-ids.ucw.cz/mods/PC/10de?action=help?help=pci
我的显卡是Nvidia-RTX 3060Ti
2.如何查看电脑当前的显卡驱动版本
一般电脑安装好Linux/Ubuntu系统以后,有的系统捆绑了Nvidia显卡驱动,在终端输入以下内容即可查看
nvidia-smi
如果出现了以下内容,则表示已经安装了Nvidia显卡驱动;
如果什么都没有,则需要重新安装!
3.如何安装Nvidia显卡驱动
在进行这一步骤之前,你应该分清楚: 你的电脑之前有没有安装过Nvidia显卡驱动 还是 已经安装了想要换一个版本。因为这两个执行策略不一样,如果没有安装过,请看3.1;如果是后者,请看3.2。
3.1 安装Nvidia显卡驱动
推荐五种方法安装Nvidia显卡驱动,A,B,C,D,E。方法C稍微复杂一些。方法D是cuda和Nvidia显卡驱动捆绑安装。安装完成后,都需要重启系统才能生效。
A. 系统软件更新,进行安装
B.终端命令行进行安装
sudo ubuntu-drivers autoinstall
sudo apt install nvidia-470 #ubuntu 18.04
上述第一条命令,亲测有效!
C.手动下载驱动文件进行安装
首先去 英伟达官网,下载正确的驱动文件:Official Drivers | NVIDIA
下载下来之后,然后更改一下文件权限,记住这个文件所在的位置,因为之后会关闭图形界面,什么都看不到。
sudo chmod a+x nvidia-xxx.run
接下来禁用系统的nouveau
sudo gedit /etc/modprobe.d/blacklist.conf
在文件中添加以下内容:
blacklist nouveau
options nouveau modeset=0
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
重启后,执行以下代码,若没有显示则禁用成功
lsmod | grep nouveau
接着安装lightdm, 关闭图形界面安装驱动的时候会用到。
sudo apt install lightdm
然后执行下面这一句。
sudo update-initramfs -u
接着把BIOS界面里面的安全启动(Secure Boot)选项关闭掉,就是你安装双系统时,设置U盘启动项的那个界面。如果安全启动没有关闭的话,会影响Nvidia显卡驱动的安装。
接着重启进入到Ubuntu里,这时候按住Ctrl+Alt+F1(因人而异,你的电脑可能是别的方式)进入到系统的黑界面里。输入用户名和密码,这时候就可以安装Nvidia显卡驱动了。
sudo service lightdm stop
#接着进入到英伟达显卡驱动文件所在的目录
sudo ./Nvidia-xxx.run --no-opengl-files --no-x-check --no-nouveau-check
#上面的三个选配参数是标配
#下面是在安装过程中的一些选择
1.The distribution-provided pre-install script failed! Are you sure you want to continue?
“Yes”
2.Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later?
“No”
3.Nvidia’s 32-bit compatibility libraries?
“No”
4.Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up.
“Yes”
接着挂载英伟达显卡驱动
modprobe nvidia
最后执行
sudo service lightdm start #回到图形界面
reboot #重启
D Cuda 和Nvidia显卡驱动绑定安装
现在的cuda文件已经集成了英伟达显卡驱动, 但是不见得能够成功。我安装的时候就失败了!
打开日志文件,查看具体原因
有些情况下是gcc编译器没有安装,用下面的命令安装即可!
sudo apt install gcc
sudo apt install g++
其他失败原因,还未查明。
E.使用PPA仓库进行安装
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update sudo apt-get upgrade --fix-missing
#使用以下命令可以查询到电脑支持的驱动版本
sudo apt-cache search nvidia | grep -oE "nvidia-[0-9]{1,3}"
3.2 更换Nvidia显卡驱动
首先将已有的显卡驱动卸载
$ sudo apt-get remove --purge nvidia*
#有时候执行上面这一行,还是可以看到nvidia显卡驱动信息,此时接着用下面这一行
$ sudo /usr/bin/nvidia-uninstall
后面的步骤和3.1一样。
4.如何查看已安装的Cuda版本号
如果没有安装过Cuda,则跳过这一步。
# 方法1,查看cuda版本。或者直接进入到/usr/local/目录,查看是否有cuda*文件夹
cat /usr/local/cuda/version.txt
# 方法2
nvcc --version
5.如何安装Cuda
由于Cuda的版本比较多,不是想安装哪个版本就安装哪个版本的。Cuda的版本和Ubuntu系统以及Nvidia显卡驱动的版本,有很大的关系。首先进入Cuda版本官网查看
CUDA Toolkit Archive | NVIDIA Developer
这么多版本,有的只适配ubuntu20.04,有的只适配ubuntu18.04 ........比如Cuda Toolkit 10.2只支持18.04和16.04.
下载好正确的版本后,就可以跟着官网教程安装了。我一般选择runfile, 之前用deb安装出现过失败。
注意:现在的cuda_xxx.run集成了Nvidia显卡驱动,当你执行sudo sh cuda_xxx.run时,会提示你系统已有英伟达显卡驱动,不用管它,接着执行。这时候在选配项中把显卡驱动关掉即可,安装重要的内容就行。
方向键上,下 选择内容;方向键左,右 展开折叠;回车键Enter 勾选或者取消勾选。
安装好之后,添加以下内容到环境变量
$ sudo gedit ~/.bashrc
注意将下面cuda版本替换成你的
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}}
记得source生效!
$ source ~/.bashrc
验证是否安装成功
nvcc -V
6 如何卸载Cuda
假如装错了版本,或者想换一个版本,应该先卸载已有的
#以下卸载方式可能和cuda版本有关,不见得适用所有的情况
cd /usr/local/cuda-xx.x/bin/
sudo ./cuda-uninstaller
sudo rm -rf /usr/local/cuda*
7.如何安装Cudnn:
cuDNN Archive | NVIDIA Developer
注意cudnn的版本要和cuda的版本保持兼容.
7.1如果选择deb安装方式,参考官方教程。deb方式有点复杂
Installation Guide - NVIDIA Docs
$ sudo dpkg -i xxx.deb
7.2如果选择压缩文件tar安装方式,参考官方教程:
Installation Guide - NVIDIA Docs
8.如何查看cudnn版本
cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
#在8.0版本之后用上面的命令就没有输出了。因为这个头文件内容变了。用下面的命令可以看到
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
输出如下信息:
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 4
#define CUDNN_PATCHLEVEL 1
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
#endif /* CUDNN_VERSION_H */
版本为8.4.1
9.Pytorch-gpu安装
先去这个网站查看cuda与pytorch对应的版本
https://download.pytorch.org/whl/torch_stable.html
官网:PyTorch
如果安装其他版本,我的cuda是10.2的版本:
pip3 install torch==1.9.1+cu102 torchvision==0.10.1+cu102 -f https://download.pytorch.org/whl/torch_stable.html
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
print(torch.cuda.is_available())
10.tensorflow-gpu 安装
Tensorflow2.x 的语法和 Tensorflow1.x 不一样,注意自己的版本。 Tensorflow和ubuntu系统版本以及cuda版本有很大关系,注意兼容。如果你是ubuntu20.04的系统,好像只能安装Tensorflow2.x,因为高版本的ubuntu系统只兼容高版本的cuda,而高版本的Tensorflow也只适配高版本的cuda。
pip3 install tensorflow-gpu==1.9.0
pip install tensorflow-gpu==2.5.0
最后验证Tensorflow-gpu是否可以正常使用
import tensorflow as tf
tf.test.is_gpu_available()
当tensorflow找不到libcu*开头的链接文件时,可以创建软链接生成目标文件
cd /usr/local/cuda-10.2/lib64 #改成你自己的路径
sudo ln -s libcublas.so libcublas.so.10.0