Ubuntu安装英伟达显卡驱动、Cuda和Cudnn

news2024/11/27 12:12:08

显卡驱动安装

1、下载对应型号显卡驱动

首先查看自己机器显卡型号

lspci | grep -i nvidia

得到如下输出,其中GeForce GTX 1080就是型号

01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1080] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1)

然后去Official Drivers | NVIDIA官网选择型号下载,得到类似NVIDIA-Linux-x86_64-450.80.02.run这样的执行文件

2、删除可能存在的Nvidia驱动

sudo apt-get remove --purge nvidia*

3、禁用原有开源显卡驱动

sudo vi /etc/modprobe.d/blacklist-nouveau.conf

然后将下面内容添加进去[存在则追加],即将nouveau驱动拉黑

blacklist nouveau
options nouveau modeset=0

保存后,执行如下命令更新改动

sudo update-initramfs -u

执行sudo reboot重启电脑,nouveau驱动应该已被禁用,执行下面命令没有输出才对

lsmod | grep nouveau

4、切换至控制台

按下Ctrl+Alt+f1切换到tty1控制台,输入用户名密码进行登录。

PS: 如果是server版本的系统[无可视化桌面系统],或者是远程登录到本机,请忽略该步骤

5、关闭桌面系统

桌面系统即X Server,用于在Linux下显示桌面和其他相关可视化环境。安装显卡驱动时必须要将目前的桌面服务关闭才能成功,同理如果是server版本则无需此操作。

sudo service lightdm stop

6、安装驱动

进入之前下载驱动文件的目录,执行如下命令

# 换成自己下载的文件名
sudo ./NVIDIA-Linux-x86_64-450.80.02.run

每次安装都会出现如下提示,实际上pre-install固定会失败的,目的就是为了让你知道你自己在干嘛,选择Continue installation

 The distribution-provided pre-install script failed!  Are you sure you want to continue?

 如下提示是否需要32位兼容,不需要,no即可

Install NVIDIA's 32-bit compatibility libraries?

或者有时会出现如下提示,直接ok忽略即可,32位兼容的问题

Unable to find a suitable destination to install 32-bit compatibility libraries. Your system may not be set up for 32-bit compatibility. 32-bit compatibility files will not be installed; if you wish to install them, re-run the installation and set a valid directory with the --compat32-libdir option.

DKMS注册内核模块,直接no不需要

Would you like to register the kernel module sources with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later

然后会有如下过程提示 

是否运行Nvidia-xconfig来配置X configuration文件,选择yes

Would you like to run the nvidia-xconfig utility to automatically update your X configuration file so that the
 NVIDIA X driver will be used when you restart X?  Any pre-existing X configuration file will be backed up.

Tips: 如果提示这个Error,说明Xserver还没关,重新执行上面的第5步关闭Xserver 

ERROR: You appear to be running an X server; please exit X before installing.  For further     
details, please see the section INSTALLING THE NVIDIA DRIVER in the README available on 
the Linux driver download page at www.nvidia.com.

6、验证安装

执行nvidia-smi命令能看到显卡相关信息即可,其中的CUDA Version: 11.1为最高能支持到的cuda版本,并非当前系统安装的cuda版本

 

Cuda安装

1、从官网下载

下载地址为CUDA Toolkit 12.1 Update 1 Downloads | NVIDIA Developer,选择自己的版本,按照命令执行即可,Installer Type一般选择runfile,然后执行最下面提示的两句命令

 

2、按照1步骤的提示下载并执行

1步骤中的两句命令一般如下

# 下载文件
wget https://developer.download.nvidia.com/compute/cuda/xxx/local_installers/cuda_xxx_linux.run
# 进行安装
sudo sh cuda_xxx_linux.runfile

一开始会让你阅读一大堆说明,直接连续按空格到最下面即可,会有如下提示:

输入accept接受协议

Do you accept the previously read EULA?
accept/decline/quit: 

是否安装显卡驱动,由于上面我们自己安装过了,所以这里选择输入n

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit:

是否安装toolkit,输入y

Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit:

输入toolkit安装目录,默认即可,按enter

Enter Toolkit Location
 [ default is /usr/local/cuda-10.0 ]:

是否创建cuda软连接,输入y,这里一定要是y,会创建/usr/local/cuda/软链指向真正的cuda目录

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit:

是否安装cuda样例,如果有测试需求可以y,当然n问题也不大,选择y的话下一步会确认安装目录,直接enter即可

Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: 

3、添加环境变量

执行vi ~/.bashrc,在文件尾部追加如下内容

export PATH=$PATH:$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda

保存后执行source ~/.bashrc使其生效

4、验证安装

执行下面命令会看到cuda版本

nvcc --version

# 如下输出
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

Cudnn安装

Cudnn安装即下载文件复制到Cuda目录的过程,故实际上并未真正安装软件

1、下载文件

下载地址为CUDA Deep Neural Network (cuDNN) | NVIDIA Developer,不过需要注册才能下载,点击Download 

勾选 I Agree 那一行之后,根据自己上面安装的Cuda版本选择对应的Cudnn版本下载,这里选择的是cuDNN Library for Linux (x86),下载后得到类似cudnn-10.0-linux-x64-v7.6.5.32.tgz的压缩文件 

执行如下命令解压,会自动解压到cuda文件夹中

 

# 换成你下载的文件
tar -zxvf cudnn-10.0-linux-x64-v7.6.5.32.tgz

执行如下操作将头文件和so文件拷贝到cuda目录下即完成安装

# 注意下面的cuda-10.0目录换成上面安装的版本号
sudo cp cuda/include/cudnn.h /usr/local/cuda-10.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64

# 增加读取权限
sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h 
sudo chmod a+r /usr/local/cuda-10.0/lib64/libcudnn*

Cuda版本切换

如果机器上安装了多个版本的cuda,则会在/usr/local/中存在多个cuda-xx的文件夹,如下: 

 

其中/usr/local/cuda文件夹是个软链接,链接到目前的cuda版本目录,所以如果要切换版本的话,只需要将原来cuda软链删除,重新建立指向另一个cuda-xx目录即可

关于NVIDIA-SMI失效

有时候执行nvidia-smi命令时会报错NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running,这种可能是由于最近升级内核导致的新内核无法启动驱动,如下处理:

1.查看之前安装的nvidia驱动版本

ls /usr/src | grep nvidia

# 得到如下输出
nvidia-srv-510.47.03

2.使用dkms重新安装

# 有些机器需要安装dkms,如果已安装则忽略
sudo apt-get install dkms

# 使用dkms重新编译
# 注意 -v 后面的版本号,就是第一步中 nvidia- 后面的内容,如果上面输出是 nvidia-510.47 ,那就得 -v 510.47
sudo dkms install -m nvidia -v srv-510.47.03

3.重启电脑,再执行nvidia-smi就恢复正常了

其他工作

剩下的就是去装pytorch和tensorflow等机器学习库了,也不难,本文不再赘述

pytorch: Start Locally | PyTorch tensorflow: GPU 支持  |  TensorFlow

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

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

相关文章

第14届蓝桥杯Scratch(中级)省赛真题解析2023.5.14

选择题 1. 已知下图角色一共有3个造型,则以下选项中,不能呈现下图中第三个造型效果的程序是(C) *选择题严禁使用程序验证,选择题不答或答错都不扣分 A. B. C. D. 2. 运行以下程序,循环执行4次后,x的值是(D)。 *选择题严禁使用程序验证,选择题不答或答错都不扣分

vue2之element-ui多个穿梭框实现 -Transfer

效果图 组件实现 -目录结构 Transfer.vue实现 <template><el-card :body-style"{ minHeight: 350px }"><el-inputv-show"filterable"v-model"filterName":placeholder"filterPlaceholder"clearableinput"han…

【Flutter】Flutter 如何切换页面

文章目录 一、简介二、Navigator 的使用三、实际示例&#xff1a;电影应用的页面切换四、完整代码五、 总结 一、简介 什么是页面切换呢&#xff1f;简单来说&#xff0c;页面切换就是在应用的不同界面之间进行跳转。例如&#xff0c;在一个电影应用中&#xff0c;从电影列表页…

java基础(多线程)-共享模型之管程

一、共享资源带来的问题 class ThreadProblem{static int counter 0;public static void testThread(){Thread t1 new Thread(()-> {for (int i 0; i < 5000; i) {counter;}},"t1");Thread t2 new Thread(()-> {for (int i 0; i < 5000; i) {count…

基于html+css的图展示126

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

苹果手机之间如何互传照片?批量传输操作指南

很多时候&#xff0c;我们用手机拍摄了好看的照片或者收藏了一些有趣的图片&#xff0c;想要分享给朋友&#xff0c;却不知道苹果手机之间如何互传照片&#xff1f;在分享大量照片的时候不清楚如何批量操作&#xff1f;别担心&#xff0c;下面小编就来分享一下苹果手机照片传输…

LeetCode279. 完全平方数 DP完全背包

https://leetcode.cn/problems/perfect-squares/ 题目描述 给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4…

python类中常用的魔术方法

文章目录 构造方法__init__对象转字符__str__对象自定义大小比较First__lt__Second__le__Third__eq__ 构造方法__init__ 构造方法也是魔术方法的一种&#xff0c;此方法我在python对象与类中已经展示过了 注意&#xff1a;在方法中引用类成员变量一定要记得使用self关键字引用…

Elasticsearch:倒数排序融合 - Reciprocal rank fusion

警告&#xff1a;此功能处于技术预览阶段&#xff0c;可能会在未来版本中更改或删除。 Elastic 将尽最大努力修复任何问题&#xff0c;但技术预览中的功能不受官方 GA 功能的支持 SLA 约束。 倒数排序融合&#xff08;RRF&#xff09;是一种将具有不同相关性指标的多个结果集组…

蓝牙资讯|Canaly发布2023Q1全球可穿戴腕带设备报告

根据市场调查机构 Canalys 公布的最新报告&#xff0c;2023 年第 1 季度全球可穿戴腕带设备出货量为 4100 万台&#xff0c;同比下降 1%。 其中&#xff0c;本季度全球基础手环市场受到厂商和消费者更关注大屏设备影响&#xff0c;出货量为 750 万台&#xff0c;同比下降 24%…

Vue中如何进行拖拽与排序功能实现

Vue中如何进行拖拽与排序功能实现 在Web应用程序中&#xff0c;拖拽和排序功能是非常常见的。在Vue中&#xff0c;我们可以使用一些组件库来实现这个功能&#xff0c;例如sortablejs和vuedraggable。本文将介绍如何使用vuedraggable组件来实现Vue中的拖拽和排序功能。 什么是v…

Selenium Python教程第7章:Selenium编程其它功能

7. Selenium其它功能 7.1 Action Chains 动作链功能 WebDriver只能模拟针对特定元素的click, send_keys 操作&#xff0c;无法执行鼠标移动、悬浮、按键&#xff0c;选择菜单等操作&#xff0c;需要通过 Action Chains 类来操作 如下面操作&#xff0c;打开主菜单项后&#x…

实战:用dockerfile创建镜像实现springboot项目容器化

文章目录 前言技术积累docker基本操作命令dockerfile简介dockerfile指令说明 实战演示创建dockerfile创建挂载目录构建dockerfile启动容器完成验证 写在最后 前言 docker容器化方案是当下流行的服务部署方式&#xff0c;在软件领域举足轻重。我公司的测试、线上环境都采用dock…

选择最适合你的云服务器:腾讯云、华为云、阿里云对比

云服务器是一种基于云计算技术的服务器&#xff0c;它可以为企业提供高效、灵活、安全的运行环境。目前市场上有很多云服务器的选择&#xff0c;其中腾讯云、华为云和阿里云是最受欢迎的三个品牌&#xff0c;下面我们来看看它们各自的优势。 腾讯云的优势在于其强大的技术支持…

谷粒商城p45-自动装配-stream流-lambda表达式

软件&#xff1a;idea、postman、virtual box 服务&#xff1a;gulimall-product 请求路径&#xff1a;http://localhost:10000/product/category/list/tree 启动&#xff1a;启动idea product模块&#xff0c;启动vm&#xff0c;启动docker mysql controller代码 自动装配C…

LeetCode494. 目标和 0-1背包DP

https://leetcode.cn/problems/target-sum/ 题目描述 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘’ 或 ‘-’ &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在…

网络传输中的那些编码之-UTF8编码漫谈

编码为什么是一个重要的话题&#xff0c;因为我们和计算机交互的主要方式目前还是文字字符。作为一个程序员&#xff0c;相信大部分都都被字符和编码的问题折磨过&#xff0c;从键盘输入文字字符到编辑器 中&#xff0c;编辑器存储字符到硬盘&#xff0c;再到具体一个编程语言如…

中国电子学会2023年05月份青少年软件编程Scratch图形化等级考试试卷二级真题(含答案)

2023-05 Scratch二级真题 题数&#xff1a;37 分数&#xff1a;100 测试时长&#xff1a;60min 一、单选题(共25题&#xff0c;共50分) 1.运行下列哪段程序&#xff0c;可以让狗狗走到木屋门口&#xff1f;&#xff08;C&#xff09;(2分) A. B. C. D. 答案解析&a…

我用AI提高我的代码质量,周边同事对我的代码赞不绝口,速来围观

文章目录 前言功能演示1.使用Stream API来简化集合操作2.使用switch语句来替代多个if-else语句3.使用try-with-resources语句来自动关闭资源4. Lambda 表达式来简化代码,并提高代码的可读性和可维护性5.查找代码中的bug并优化6.python 使用sort方法来对列表进行排序7.javaScrpi…

一文看懂MySQL是什么

你可以前往我的博客查看更多关于云服务器和数据库以及域名注册、建站等相关文章。 MySQL是一种开源关系型数据库管理系统&#xff0c;它是最受欢迎的数据库之一。MySQL是由瑞典公司MySQL AB创建的&#xff0c;后来被Sun Microsystems收购&#xff0c;现在是Oracle Corporation…