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

news2024/11/16 15:09:19

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

  • 一、NVIDIA驱动与CUDA驱动的区别
  • 二、NVIDIA驱动安装与卸载
      • 1. 查看系统内核版本
      • 2. 查看显卡型号
      • 3. 查看是否有显卡驱动
      • 4. 禁用nouveau并重启
      • 5. 卸载旧版本
      • 6. 安装1:使用标准Ubuntu仓库进行自动化安装
      • 7. 安装2:使用PPA仓库进行自动化安装
      • 7. 安装3:使用官方的NVIDIA驱动进行手动安装
  • 三、CUDA工具包安装与卸载
      • 1. CUDA安装
      • 2. 安装完成后,编辑bashrc文件,设置cuda环境变量
      • 3. 测试安装成功
      • 4. 卸载
      • 5. 卸载干净检查
  • 四、CuDNN安装与卸载

一、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了

7. 安装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位的兼容库)
安装完成,重启就OK了

三、CUDA工具包安装与卸载

1. CUDA安装

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

由于我们需要安装指定版本,所以建议本地安装,最后一个选择deb(local)

在这里插入图片描述
然后按照下面的指令依次安装

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda-repo-ubuntu2004-11-3-local_11.3.0-465.19.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-3-local_11.3.0-465.19.01-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-3-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

安装cuda的时候一路确认,选择默认设置即可。但是,需要注意的是,当询问是否安装显卡驱动时,选择no,当输入nvidia-smi没问题的时候一般代表显卡驱动没问题

  • cuda默认是安装在/usr/local目录下的,可执行文件都存放在bin目录下,需要用到的库放在lib64下。
  • 安装完成后,local目录下出现了名为cuda-11.3的文件夹。由于在安装过程中选择了创建软连接,即创建了cuda目录指向cuda-11.3,故接下来添加路径只需添加cuda的路径即可。这样做,在进行不同版本的cuda切换时会方便很多。

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

sudo gedit ~/.bashrc

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

3. 测试安装成功

nvcc -V

4. 卸载

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开头的东西

5. 卸载干净检查

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

四、CuDNN安装与卸载

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1615162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四川易点慧电子商务抖音小店:安全正规,购物新选择

在当今互联网高速发展的时代,电子商务已经成为人们日常购物的重要组成部分。四川易点慧电子商务抖音小店作为新兴的电商平台,凭借其安全正规的经营理念和便捷高效的购物体验,正逐渐赢得消费者的信赖和喜爱。 一、平台背景实力雄厚 四川易点慧…

面试十八、容器适配器

容器适配器是一种特殊类型的容器,它们提供了一种不同于常规容器的接口和行为。容器适配器通常是建立在其他容器之上,通过改变接口或添加限制来满足特定的需求或解决特定的问题。 在 C 中,标准库提供了三种常见的容器适配器: 栈&am…

在PostgreSQL中如何处理大对象(Large Objects),例如存储和检索二进制文件?

文章目录 存储二进制文件为大对象步骤 1:创建一个大对象步骤 2:写入数据到大对象 检索大对象为二进制文件步骤 1:打开大对象以进行读取步骤 2:从大对象读取数据 注意事项 PostgreSQL 提供了对大对象(Large Objects&…

JavaSE-15笔记【注解(+2024新)】

文章目录 1.注解概述2.几个常用的JDK内置的注解2.1 Deprecated2.2 Override2.3 SuppressWarnings2.4 FunctionalInterface 3.自定义注解3.1 注解也可以定义属性3.2 注解的使用规则补充 4.元注解4.1 Retention4.2 Target4.3 Documented4.4 Inherited4.5 Repeatable 5.通过反射获…

修改npm源--多种方式

2024年,1月22日 npm.taobao.org 域名证书已到期下线。 重置官方源 npm config set registry https://registry.npmjs.org/ 淘宝源,使用最新版,旧版停止了 npm config set registry https://registry.npmmirror.com 查看当前镜像源 npm …

精心整理的不同操作系统不同实现方案网络安全中的权限提升117种提权手法

精心整理的不同操作系统不同实现方案网络安全中的权限提升117种提权手法。 什么是网络安全中的权限提升? 在网络安全领域,了解威胁至关重要,而最关键的威胁之一就是特权升级的概念。从本质上讲,权限升级是指攻击者获得通常为高级用…

阿斯达年代记怎么下载 阿斯达年代记三强争霸下载教程

阿斯达年代记怎么下载 阿斯达年代记三强争霸下载教程 阿斯达年代记是一款三国争霸类型的游戏,在游戏中大家可以体验到三权争霸的刺激场景,在战场中大家不仅可以体验到体验到文化交织还可以感受到战场的残酷,本期小编将会给大家带来阿斯达年代…

vue-manage-system 版本更新,让开发更加简单

vue-manage-system 近期进行了一次版本升级,主要是支持了更多功能、升级依赖版本和优化样式,并且上线了官方文档网站,大部分功能都有文档或者使用示例,更加适合新手上手开发,只需要根据实际业务简单修改,就…

记录:阿里云服务器网站搭建(3)

Docker安装配置Tomcat 拉取镜像 docker pull tomcat:8启动一个tomcat容器用于拷贝配置文件 docker run -d -p 8080:8080 --name tomcat tomcat:8拷贝容器内tomcat配置文件和日志到本地准备映射 docker cp tomcat:/usr/local/tomcat/conf /mydata/tomcat/confdocker cp tomca…

【Linux系统化学习】线程控制

目录 前言 POSIX线程库 线程控制 创建线程 线程终止 pthread_exit()函数 pthread_cancel()函数(会在下面线程等待部分详解) 线程等待 pthread_join()函数 获取线程退出码 分离线程 线程取消(pthread_cancel()函数) 线程ID及进程…

http 3.0 有哪些新特性

HTTP/3 是超文本传输协议(HTTP)的最新主要版本,其显著特点是放弃了传统的TCP作为传输层协议,转而采用基于UDP的QUIC(Quick UDP Internet Connections)协议。以下是HTTP/3利用QUIC实现高性能传输的关键特性&…

街道社区信息宣传工作做的好这个投稿方法不能少

作为一名刚刚接手街道社区信息宣传工作的新人,伊始对于如何有效地向各大媒体平台投稿我可谓是一头雾水。那时的日子充满了曲折与挑战,每一步都似乎布满了荆棘。为了让更多居民了解社区的工作动态和服务亮点,我怀揣着满腔热情,着手撰写一篇篇生动详实的新闻稿件。然而,投稿的过程…

mac上VMware fusion net模式无法正常使用的问题

更新时间:2024年04月22日21:39:04 1. 问题 环境: intel芯片的macbook pro VMware fusion 13.5.1 无法将“Ethernet0”连接到虚拟网络“/dev/vmnet8”。在这里显示这个之后,应该是vmnet8的网段发生了冲突,所以导致无法正常使用…

HTML 如何实现一个带间隙的圆环

实际效果&#xff1a; ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5e634cedded9424d96fbe6d46f34f61a.png#pic_center 代码实现&#xff1a; HTML部分&#xff1a; <svg width"500" height"500" viewBox"0 0 100 100">&…

【机器学习-17】数据变换---小波变换特征提取及应用案列介绍

引言 在机器学习领域&#xff0c;数据变换是一种常见且重要的预处理步骤。通过对原始数据进行变换&#xff0c;我们可以提取出更有意义的特征&#xff0c;提高模型的性能。在众多数据变换方法中&#xff0c;小波变换是一种非常有效的方法&#xff0c;尤其适用于处理非平稳信号和…

科学中的概率大师:Avi Wigderson 教授的图灵奖探索

文章目录 前言一、图灵奖的新星二、揭秘计算随机性三、Wigderson 的研究突破四、学术与产业的共鸣五、荣誉与责任总结 前言 在计算机科学的辽阔星空中&#xff0c;随机性与伪随机性犹如迷人的双子星座&#xff0c;挑战着我们的智力边界。Avi Wigderson&#xff0c;普林斯顿大学…

创建虚拟环境(记录一下)

conda create -n name python3.8版本高于11.7&#xff1a; pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117 --force-reinstall --user 检验是否为true import torch print(torch.cuda.is_available()) stable diff…

(十六)call、apply、bind介绍、区别和实现

函数中的this指向&#xff1a; 函数中的this指向是在函数被调用的时候确定的&#xff0c;也就是执行上下文被创建时确定的。在一个执行上下文中&#xff0c;this由调用者提供&#xff0c;由调用函数的方式来决定。 类数组对象arguments&#xff1a; arguments只在函数&#…

消息队列选型(RabbitMq、RocketMq、Kafaka)

文章目录 前言RabbitMq优点缺点 RocketMq优点缺点 Kafaka优点缺点 总结 前言 当引入消息队列时&#xff0c;常见的选择包括ActiveMQ、Kafka、RabbitMQ和RocketMQ。然而&#xff0c;近年来&#xff0c;ActiveMQ的活跃度已经下降&#xff0c;很多公司已经不再使用这款消息队列中…

DBeaver导入sql文件

DBeaver导入sql文件 下载数据库 数据库下载地址&#xff1a; https://www.begtut.com/mysql/mysql-sample-database.html数据库导入 获取sql文件中创建的数据库的名称&#xff0c;创建一个同名的数据库。 输入数据库的名称&#xff0c;设置字符集和排序规则 数据库创建完…