nvidia
显卡驱动、cuda与cudnn之间的区别
cuda是NVIDIA推出的自家GPU的并行计算框架。
注意事项:NVIDIA的显卡驱动器与CUDA并不是一一对应的哦,CUDA本质上只是一个工具包而已,所以我可以在同一个设备上安装很多个不同版本的CUDA工具包,比如我的电脑上同事安装了 CUDA 9.0、CUDA 9.2、CUDA 10.0三个版本。一般情况下,我只需要安装最新版本的显卡驱动,然后根据自己的选择选择不同CUDA工具包就可以了,但是由于使用离线的CUDA总是会捆绑CUDA和驱动程序,所以在使用多个CUDA的时候就不要选择离线安装的CUDA了,否则每次都会安装不同的显卡驱动,这不太好,我们直接安装一个最新版的显卡驱动,然后在线安装不同版本的CUDA即可。
总结:CUDA和显卡驱动是没有一一对应的。
cuDNN是一个SDK,是一个专门用于神经网络的加速包,注意,它跟我们的CUDA没有一一对应的关系,即每一个版本的CUDA可能有好几个版本的cuDNN与之对应,但一般有一个最新版本的cuDNN版本与CUDA对应更好。
总结:cuDNN与CUDA没有一一对应的关系
驱动安装
windows
ubuntu
查看显卡型号
nvidia-smi
当确定为 Nvidia 的显卡时,此时可以通过nvidia-smi命令来查看GPU的使用情况。
直接运行nvidia-smi
user@user-PC:~$ nvidia-smi
Tue May 25 09:20:12 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 465.19.01 Driver Version: 465.19.01 CUDA Version: 11.3 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:00:02.0 On | N/A |
| 30% 32C P8 8W / 250W | 244MiB / 7979MiB | 5% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 961 G /usr/lib/xorg/Xorg 210MiB |
| 0 N/A N/A 2308 G compiz 18MiB |
| 0 N/A N/A 2776 G ...nlogin/bin/sunloginclient 9MiB |
| 0 N/A N/A 18689 G unity-control-center 2MiB |
+-----------------------------------------------------------------------------+
可以通过
nvidia-smi -L直接枚举设备上装载的NVIDIA显卡
GPU 0: NVIDIA GeForce RTX 2080 SUPER (UUID: GPU-0f79590e-4937-c4c4-83a7-d1e22eaf418e)
nvidia的驱动安装首先禁用 nouveau(第三方驱动)
// 禁用 nouveau
sudo vim /etc/modprobe.d/blacklist.conf
//在 blacklist 中添加
blacklist nouveau
//完成后执行
sudo update-initramfs -u
// 重启
// 重启后进入终端确认是已禁用 nouveau
lsmod | grep nouevau
// 没有任何提示则说明已禁用
// 如果通过其他方式安装过驱动则先卸载
sudo apt-get purge --remove nvidia*
// 安装驱动 建议使用 run 文件进行安装
// 首先禁用桌面图形服务
sudo service lightdm stop
sudo ./NVIDIA-Linux-x86_64-xxx.xx.run -no-x-check -no-nouveau-check -no-opengl-files
// 其中 -no-x-check 安装驱动时关闭X服务
// 其中 -no-nouveau-check 安装驱动时禁用 nouveau
// 其中 -no-opengl-files 只安装驱动,不安装 opengl 等文件
// 实际操作中,这几个参数报错
// 安装结束后开启桌面图形服务
sudo service lightdm start
// 通过 nvidia-smi 查看 gpu 信息
若要卸载驱动,执行
sudo ./NVIDIA-Linux-x86_64-xxx.xx.run --uninstall
cuda 安装与卸载
windows 安装 cuda
ubuntu 安装 cuda
必须在 NVIDIA 显卡驱动安装完成之后才能安装 cuda
建议通过 run 文件安装 cuda
使用 deb 安装时,最后莫名其妙安装了最新版本的cuda,而不是指定版本的cuda
如果安装失败,可以尝试在禁用图形服务时进行安装。
通过 nvcc -V 查看 cuda 版本
(whh-yolov8) jk506@jk506-IdeaCentre-GeekPro-17IRB:~/Desktop/wuhanghai/git/github/ultralytics$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_Sep_13_19:13:29_PDT_2021
Cuda compilation tools, release 11.5, V11.5.50
Build cuda_11.5.r11.5/compiler.30411180_0
通过 nvidia-smi -l 查看的cuda版本是当前驱动支持的最高cuda版本
(whh-yolov8) jk506@jk506-IdeaCentre-GeekPro-17IRB:~/Desktop/wuhanghai/git/github/ultralytics$ nvidia-smi -l
Wed Dec 6 16:35:51 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.98 Driver Version: 535.98 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 3060 Off | 00000000:01:00.0 Off | N/A |
| 31% 33C P8 11W / 170W | 4821MiB / 12288MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 1316 G /usr/lib/xorg/Xorg 61MiB |
| 0 N/A N/A 1554 G /usr/bin/gnome-shell 9MiB |
| 0 N/A N/A 25646 G ...4937702,13734300358402629662,262144 25MiB |
| 0 N/A N/A 802718 C tritonserver 4712MiB |
+---------------------------------------------------------------------------------------+
ubuntu 卸载 cuda
注意把下边的xx.x替换为自己的cuda版本。
cuda10.0及以下的卸载:
cd /usr/local/cuda-xx.x/bin/
sudo ./uninstall_cuda_xx.x.pl
sudo rm -rf /usr/local/cuda-xx.x
cuda10.1及以上的卸载:
cd /usr/local/cuda-xx.x/bin/
sudo ./cuda-uninstaller
sudo rm -rf /usr/local/cuda-xx.x
最后边加了一句sudo rm -rf /usr/local/cuda-xx.x,这是因为一般情况下cuda都配置了cudnn,在运行卸载程序时只会卸载cuda而不会一并删除cudnn的文件。因为cudnn文件还在的缘故,自己的cuda-xx.x文件夹仍然在,需要手动删除。
所以如果自己要卸载的cuda没有配置cudnn,那么cuda-xx.x文件夹在卸载完成后会被自动删除,也就没必要再运行最后一句了。
cuDNN 安装与卸载
ubuntu 安装 cuDNN
下载 cuDNN 的安装文件,解压后安装
cuDNN Library for Linux[x86_64]
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
查看 cuDNN 版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
(1)将cuda/include/cudnn.h文件复制到usr/local/cuda/include文件夹,将cuda/lib64/下所有文件复制到/usr/local/cuda/lib64文件夹中,并添加读取权限:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
–然后更改权限
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
接下来安装Deb包, cuDNN Runtime Library for Ubuntu18.04(Deb),cuDNN Developer Library for Ubuntu18.04(Deb),cuDNN Code Samples and User Guide for Ubuntu18.04(Deb)
sudo dpkg -i libcudnn8_8.0.5.39-1+cuda11.0_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.5.39-1+cuda11.0_amd64.deb
sudo dpkg -i libcudnn8-samples_8.0.5.39-1+cuda11.0_amd64.deb
测试是否安装成功,分别输入以下四个命令:
cp -r /usr/src/cudnn_samples_v8/ ~
cd ~/cudnn_samples_v8/mnistCUDNN/
make clean && make
./mnistCUDNN
ubuntu 卸载 cuDNN
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*
sudo rm -rf /usr/include/cudnn.h
sudo rm -rf /usr/lib/x86_64-linux-gnu/libcudnn*
TensorRT安装
在安装好 cuda 以及 cudnn 后,可以进行 TensorRT 安装
#解压
tar xzvf TensorRT-${version}.${os}.${arch}-gnu.${cuda}.${cudnn}.tar.gz
设置环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<TensorRT-${version}/lib>