Ubuntu系统下 Nvidia驱动 + cuda驱动 + CuDNN安装与卸载

发布于:2024-04-24 ⋅ 阅读:(42) ⋅ 点赞:(0)

欢迎大家点赞、关注集群式无人机板块(今年会全面完善仿真环境、算法、真实部署等多个部分)~

一、NVIDIA驱动与CUDA驱动的区别

  • CUDA驱动与NVIDIA驱动并不是一个东西,NVIDIA驱动接入GPU,对外提供能够访问GPU的接口;CUDA驱动接入NVIDIA驱动提供的接口访问GPU,同时接入程序,将运行结果输出。
  • CUDA Toolkit包含了CUDA驱动和工具

CUDA是NVIDIA发明的并行计算平台和编程模型。它通过利用GPU的强大功能,显着提高计算性能。
CUDA 的开发考虑了以下几个设计目标:

  • 支持 CUDA 的 GPU 拥有数百个核心,可以共同运行数千个计算线程。这些内核具有共享资源,包括寄存器文件和共享存储器。片上共享内存允许在这些内核上运行的并行任务共享数据,而无需通过系统内存总线发送数据。
  • 支持应用程序同时使用 CPU 和 GPU 的异构计算。应用程序的串行部分在 CPU 上运行,并行部分则卸载到 GPU。因此,CUDA 可以增量地应用于现有应用程序。 CPU 和 GPU 被视为具有自己的内存空间的独立设备。此配置还允许在 CPU 和 GPU 上同时计算,而不会争用内存资源。
  • 提供一小组对标准编程语言(例如 C)的扩展,可以直接实现并行算法。借助 CUDA C/C++,程序员可以专注于算法并行化的任务,而不是将时间花在算法的实现上。

二、NVIDIA驱动安装与卸载

1. 查看系统内核版本

cat /proc/version
#或
uname -a

2. 查看显卡型号

lspci | grep -i nvidia
或
lspci -vnn | grep VGA

3. 查看是否有显卡驱动

nvidia-smi
#或
lshw -c video

4. 禁用nouveau并重启

安装Nvidia显卡的官方驱动和系统自带的nouveau驱动冲突

lsmod | grep nouveau
# 如果有输出,说明nouveau正在加载
sudo vim /etc/modprobe.d/blacklist.conf
# 在最后一行加入
blacklist nouveau
options nouveau modeset=0
# 更新
sudo update-initramfs -u
# 重启
reboot
# 再次查看是否禁用nouveau
lsmod | grep nouveau
# 没有输出禁用成功

5. 卸载旧版本

sudo apt-get --purge remove nvidia*
sudo apt autoremove
sudo /usr/bin/nvidia-uninstall

6. 安装1:使用标准Ubuntu仓库进行自动化安装

首先,检测你的NVIDIA显卡型号和推荐的驱动程序的模型。

ubuntu-drivers devices

如下,推荐nvidia-driver-535-server-open
在这里插入图片描述
执行自动安装,将会安装所有推荐的驱动程序

sudo ubuntu-drivers autoinstall

安装完成,重启就OK了

7. 安装2:使用PPA仓库进行自动化安装

使用图形驱动程序PPA存储库安装NVIDIA beta驱动程序,但 有时候这有可能会出现兼容性的问题
将ppa:graphics-drivers/ppa存储库添加到系统中:

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update

接下来和之前一样,检测你的NVIDIA显卡型号和推荐的驱动程序的模型。

ubuntu-drivers devices
sudo apt install nvidia-driver-535-server-open

安装完成,重启就OK了

8. 安装3:使用官方的NVIDIA驱动进行手动安装

根据之前准备工作查看的显卡型号,进入Nvidia官方下载对应型号的显卡驱动

wget -c http://us.download.nvidia.com/XFree86/Linux-x86_64/440.82/NVIDIA-Linux-x86_64-535.146.02.run
sudo chmod a+x NVIDIA-Linux-x86_64-535.146.02.run
sudo ./NVIDIA-Linux-x86_64-535.146.02.run -no-opengl-files -no-nouveau-check -no-x-check

-no-x-check:安装驱动时关闭X服务
-no-nouveau-check:安装驱动时禁用nouveau
-no-opengl-files:只安装驱动文件,不安装OpenGL文件

第一个问题选择continue installation,第二个问题选择No(32位的兼容库,这个问题yes or no都可以,推荐no),第3个问题选择Yes(统一调用接口),最后一个选择默认的No(关闭X服务)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装完成,重启就OK了

9. 安装错误

如果遇到如下安装错误,这是因为之前安装过Nvidia driver和CUDA,导致仍然占用,无法释放硬件资源。

An NVIDIA kernel module ‘nvidia-drm’ appears to already be loaded in your kernel. This may be because it is in use (for example, by an X server, a CUDA program, or the NVIDIA Persistence Daemon), but this may also happen if your kernel was configured without support for module unloading. Please be sure to exit any programs that may be using the GPU(s) before attempting to upgrade your driver. If no GPU-based programs are running, you know that your kernel supports module unloading, and you still receive this message, then an error may have occured that has corrupted an NVIDIA kernel module’s usage count, for which the simplest remedy is to reboot your computer.
解决方案:

sudo systemctl isolate multi-user.target
sudo modprobe -r nvidia-drm
sudo apt-get --purge remove nvidia*
sudo apt autoremove
sudo systemctl isolate graphical.target
reboot

就可以完美解决了

切记,当执行第一条命令的时候,就会直接切换到命令行界面,所以建议先拍照,否则后续不知道咋操作。

10. 测试安装成功

nvidia-smi
or 
sudo dpkg --list | grep nvidia-*

三、CUDA工具包安装与卸载

1. CUDA安装

首先到官网下载CUDA Toolkit 11.3(举例)

由于我们需要安装指定版本,所以建议本地安装,最后一个选择deb(local)
在这里插入图片描述

然后按照下面的指令依次安装

wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run
sudo sh cuda_11.3.0_465.19.01_linux.run

cuda主要有以下参数:

  • -no-opengl-libs:表示只安装驱动文件,不安装OpenGL文件。必需参数,原因同上。注意:不是-no-opengl-files。
  • -uninstall (deprecated):用于卸载CUDA Driver(已废弃)。
  • -toolkit:表示只安装CUDA Toolkit,不安装Driver和Samples
  • -help:查看更多高级选项。

安装过程

  • 会先有个阅读声明,选择accept。
    在这里插入图片描述
  • install nvidia accelerated Graphics Driver,输入n,因为我们已经安装了nvidia的驱动。
    在这里插入图片描述
  • 后面的可以都选择yes
  • 最后安装结束 代表安装完成,但是不代表成功。这时需要重启。在这里插入图片描述
  • cuda默认是安装在/usr/local目录下的,可执行文件都存放在bin目录下,需要用到的库放在lib64下。
  • 安装完成后,local目录下出现了名为cuda-11.3的文件夹。由于在安装过程中选择了创建软连接,即创建了cuda目录指向cuda-11.3,故接下来添加路径只需添加cuda的路径即可。这样做,在进行不同版本的cuda切换时会方便很多。

2. 安装完成后,编辑bashrc文件,设置cuda环境变量

sudo vim ~/.bashrc
# 在文件末尾添加:
export CUDA_HOME=/usr/local/cuda-11.3
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-11.3/bin:$PATH
# 保存关闭文件后,运行
source ~/.bashrc

3. 测试安装成功

nvcc -V

4. 安装失败

如果安装失败,有可能是缺少依赖,终端执行:

sudo apt-get install freeglut3-dev \
build-essential \
libx11-dev \
libxmu-dev \
libxi-dev \
libgl1-mesa-glx \
libglu1-mesa \
libglu1-mesa-dev

5. 卸载

A: 运行卸载脚本

1.运行卸载脚本
cd /usr/local/cuda/bin
sudo ./cuda-uninstaller
2.删除安装文件夹
sudo rm -rf cuda
sudo rm -r cuda-12.2

B: 卸载软件及其配置

sudo apt-get --purge remove cuda   :卸载软件及其配置
sudo apt-get autoremove cuda          :卸载软件及其依赖的安装包
sudo apt-get autoclean ubuntu          :删除残余

C: 手动卸载

sudo dpkg -P cuda  然后按Tab键补全,按两次就会弹出所有cuda开头的东西

6. 卸载干净检查

sudo dpkg -l |grep cuda         :罗列已安装cuda开头的东西,发现还是有很多没有卸载掉

四、CuDNN安装与卸载

  • 首先到CuDNN下载页面,选择合适的版本进行下载,我下载的cudnn-linux-x86_64-8.9.4.25_cuda11-archive.tar.xz
  • 然后解压,并进入相应目录,执行一下命令
tar -xvf cudnn-linux-x86_64-8.9.4.25_cuda11-archive.tar.xz
cd cudnn-linux-x86_64-8.9.4.25_cuda11-archive
sudo cp lib/* /usr/local/cuda-11.3/lib64/
sudo cp include/* /usr/local/cuda-11.3/include/
sudo chmod a+r /usr/local/cuda-11.3/lib64/*
sudo chmod a+r /usr/local/cuda-11.3/include/*
  • 通过以下命令查看CuDNN版本
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2