ubuntu22.04 安装 NVIDIA 驱动以及CUDA
目录
1、事前问题解决
2、安装 nvidia 驱动
3、卸载 nvidia 驱动方法
4、安装 CUDA
5、安装 Anaconda
6、安装 PyTorch
1、事前问题解决
在安装完ubuntu之后,如果进入ubuntu出现黑屏情况,一般就是nvidia驱动与linux自带的不兼容,可以通过以下方式解决:
1、启动电脑,进入引导菜单,将光标移动到 Ubuntu项,按键盘上的 "E" 键,进入GRUB页面
2、选择首单词为 linux 对应的行,将光标移动到该行的末尾(一般这行的倒数第2、3个参数为:quiet splash),在这行末尾空一个后输入:nomodeset ,按下键盘的 “Ctrl + X” 或者 F10启动,就能进入Ubuntu系统桌面了。
3、之后需要将系统自带的 nouveau 驱动加入系统黑名单中,输入:sudo gedit /etc/modprobe.d/blacklist.conf ,在文件的末尾添加以下字段:blacklist nouveau,该操作就是将 nouveau 驱动加入系统黑名单
4、最后更新黑名单:sudo update-initramfs -u
2、安装 nvidia 驱动
接下来查询系统推荐的nvidia显卡版本号:
// 先执行这两行 cmd,否则可能出现 ubuntu-drivers devices 执行后没反映的现象
sudo apt update
sudo apt upgrade
// 查询系统建议安装的nvidia版本
ubuntu-drivers devices
/// 例如
wsx@wsx:~$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0 ==
modalias : pci:v000010DEd00002520sv00001043sd00001722bc03sc00i00
vendor : NVIDIA Corporation
model : GA106M [GeForce RTX 3060 Mobile / Max-Q]
driver : nvidia-driver-545-open - distro non-free
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-535 - distro non-free recommended // 建议安装版本
driver : nvidia-driver-470 - distro non-free
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-535-open - distro non-free
driver : nvidia-driver-535-server-open - distro non-free
driver : nvidia-driver-545 - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
然后首先确保 BIOS 的 security boot 是 disable 状态的,以华硕电脑为例,操作如下:
安装过程中可能在进入BIOS时找不到U盘启动项,这时可以尝试将电脑的 Secure Boot Control 关掉。具体的做法为:进入BIOS -> Advanced Mode -> Security -> Secure Boot -> Secure Boot Control -> Disabled。如下所示:
然后执行以下命令安装,最后需要执行 reboot 重启电脑(必须重启,否则后面执行 nvidia-smi 会报错):
sudo apt install nvidia-driver-535
reboot
重启之后执行 nvidia-smi,正常情况下可以看到 nvidia driver 信息以及显卡信息:
注意,这里右上角所显示的 cuda version 是指当前 nvidia 所支持的 cuda 的最高版本,也就是说是可以兼容 cuda 12.1 的。
nvidia-smi 显示的的 cuda version 是当前驱动支持的最大 cuda toolkit 的版本。
CUDA有两种API,分别是运行时API和驱动API,即所谓的Runtime API与Driver API。[可参考:CUDA Compatibility]
nvidia-smi 的结果除了有 GPU 驱动版本型号,还有 CUDA Driver API 的版本号,而 nvcc -V 的结果是对应 CUDA Runtime API。CUDA Runtime API 依赖 CUDA Driver API。
使用conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia 命令安装 pytorch 时,附带的 CUDA 和从官网安装的 CUDA 有何不同?一言以蔽之:前者是后者的子集,是 pytorch 所必须的那一部分子集,而像编译器 nvcc 等非必须的 CUDA 组件则没有。
Pytorch往往只需要使用 CUDA 的动态链接库使程序顺利运行,因为其中利用 CUDA 计算的部分是提前编译好的 ,就像常见的可执行程序一样,不需要重新进行编译过程,只需要其所依赖的动态链接库存在即可正常运行。
当两者同时安装时,pytorch 深度学习环境会优先使用前者。当没有单独安装CUDA时,如果在安装pytorch时安装了 CUDA 子集,那么环境也是可以正常使用的,这在pytorch的源码中可以发现。因此建议使用深度学习环境的同学非必要不安装单独的CUDA,只需保持显卡驱动的正常更新即可。
参考:https://www.zhihu.com/question/622711856/answer/3339303390
3、卸载 nvidia 驱动方法
卸载nvidia驱动的方法:
sudo apt-get purge nvidia-*
sudo apt-get update
sudo apt-get autoremove
4、安装 CUDA
CUDA 版本与 NVIDIA 驱动的兼容关系可以参考:CUDA 12.5 Update 1 Release Notes
CUDA 的下载地址: CUDA Toolkit Archive | NVIDIA Developer
这里我装 12.1.1 版本
选择 runfile 来安装,deb 那个看起来命令太多了,吓人。。。
这里我在 wget 后面加一个 -P 参数可以制定安装文件夹路径,对应的在执行 .run 文件时也需要加上指定的路径才行:
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run -P Downloads/
sudo sh Downloads/cuda_12.1.1_530.30.02_linux.run
安装的时候记得去掉安装 driver 的选项,因为上面已经装过了。安装完成之后会出现:
然后添加系统环境变量,根据自己安装的实际版本修改:
export PATH=$PATH:/usr/local/cuda-12.1/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.1/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-12.1/lib64
然后输入 nvcc -V 来查看是否安装成功:
source .bashrc // 刷新刚才写入的环境变量
nvcc -V
Ubuntu 安装NVIDIA显卡驱动、安装对应的CUDA_ubuntu安装nvidia显卡驱动-CSDN博客
接下来:
5、安装 Anaconda
Download Anaconda Distribution | Anaconda
创建conda环境:
conda create -n name python=3.12
6、安装 PyTorch
Start Locally | PyTorch
嫌弃 ubuntu pip 安装太慢的话,可以换一下国内的源:
cd ~
mkdir .pip
cd .pip
touch pip.conf
sudo chmod 755 pip.conf
gedit pip.conf
填入以下内容并保存,我这里选择aliyun的源:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
下载直接起飞~
相关文章:

ubuntu22.04 安装 NVIDIA 驱动以及CUDA
目录 1、事前问题解决 2、安装 nvidia 驱动 3、卸载 nvidia 驱动方法 4、安装 CUDA 5、安装 Anaconda 6、安装 PyTorch 1、事前问题解决 在安装完ubuntu之后,如果进入ubuntu出现黑屏情况,一般就是nvidia驱动与linux自带的不兼容,可以通…...

数据结构·AVL树
1. AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果存数据时接近有序,二叉搜索将退化为单支树,此时查找元素效率相当于在顺序表中查找,效率低下。因此两位俄罗斯数学家 G.M.Adelson-Velskii 和E.M.Landis 在1962年发明了一种解…...

记一次Mycat分库分表实践
接了个活,又搞分库分表。 一、分库分表 在系统的研发过程中,随着数据量的不断增长,单库单表已无法满足数据的存储需求,此时就需要对数据库进行分库分表操作。 分库分表是随着业务的不断发展,单库单表无法承载整体的数据存储时,采取的一种将整体数据分散存储到不同服务…...

数据分析:微生物数据的荟萃分析框架
介绍 Meta-analysis of fecal metagenomes reveals global microbial signatures that are specific for colorectal cancer提供了一种荟萃分析的框架,它主要基于常用的Wilcoxon rank-sum test和Blocked Wilcoxon rank-sum test 方法计算显著性,再使用分…...

Django—admin后台管理
Django官网 https://www.djangoproject.com/ 如果已经有了Django跳过这步 安装Django: 如果你还没有安装Django,可以通过Python的包管理器pip来安装: pip install django 创建项目: 使用Django创建一个新的项目: …...

数字图像处理中的常用特殊矩阵及MATLAB应用
一、前言 Matlab的名称来源于“矩阵实验室(Matrix Laboratory)”,其对矩阵的操作具有先天性的优势(特别是相对于C语言的数组来说)。在数字图像处理中,为了提高编程效率,我们可以使用多种方式来创…...

vue侦听器(Watch)精彩案例剖析一
目录 watch介绍 监视普通数据类型 监视对象类型 watch介绍 在 Vue 中,watch主要用于监视数据的变化,并执行相应操作。一旦被监视的属性发生变化,回调函数将自动被触发。当在 Vue 中使用watch来响应数据变化时,首先要清楚,watch本质上是一个对象,且必须以对象的…...

HTTP 协议浅析
HTTP(HyperText Transfer Protocol,超文本传输协议)是应用层最重要的协议之一。它定义了客户端和服务器之间的数据传输方式,并成为万维网(World Wide Web)的基石。本文将深入解析 HTTP 协议的基础知识、工作…...

VsCode | 让空文件夹始终展开不折叠
文章目录 1 问题引入2 解决办法3 效果展示 1 问题引入 可能很多小伙伴更新VsCode或者下载新版本时候 ,创建的文件 会出现xxx文件夹/xxx文件夹,看着很不舒服,所以该如何展开所有空文件夹呢? 2 解决办法 找到VsCode的设置 &…...

Centos7_Minimal安装Cannot find a valid baseurl for repo: base/7/x86_6
问题 运行yum报此问题 就是没网 解决方法 修改网络信息配置文件,打开配置文件,输入命令: vi /etc/sysconfig/network-scripts/ifcfg-网卡名字把ONBOOTno,改为ONBOOTyes 重启网卡 /etc/init.d/network restart 网路通了...

Spark_Oracle_II_Spark高效处理Oracle时间数据:通过JDBC桥接大数据与数据库的分析之旅
接前文背景, 当需要从关系型数据库(如Oracle)中读取数据时,Spark提供了JDBC连接功能,允许我们轻松地将数据从Oracle等数据库导入到Spark DataFrame中。然而,在处理时间字段时,可能会遇到一些挑战…...

力扣 459重复的子字符串
思路: KMP算法的核心是求next数组 next数组代表的是当前字符串最大前后缀的长度 而求重复的子字符串就是求字符串的最大前缀与最大后缀之间的子字符串 如果这个子字符串是字符串长度的约数,则true /** lc appleetcode.cn id459 langcpp** [459] 重复…...

MyBatis XML配置文件
目录 一、引入依赖 二、配置数据库的连接信息 三、实现持久层代码 3.1 添加mapper接口 3.2 添加UserInfoXMLMapper.xml 3.3 增删改查操作 3.3.1 增(insert) 3.3.2 删(delete) 3.3.3 改(update) 3.3.4 查(select) 本篇内容仍然衔接上篇内容,使用的代码及案…...

读写RDS或RData等不同格式的文件,包括CSV和TXT、Excel的常见文件格式,和SPSS、SAS、Stata、Minitab等统计软件的数据文件
R语言是数据分析和科学计算的强大工具,其丰富的函数和包使得处理各种数据格式变得相对简单。在本文中,我们将详细介绍如何使用R语言的函数命令读取和写入不同格式的文件,包括RDS或RData格式文件、常见的文本文件(如CSV和TXT)、Excel文件,和和SPSS、SAS、Stata、Minitab等…...

Android 支持的媒体格式,(二)视频支持格式
视频支持格式: 格式编码器解码器具体说明文件类型 容器格式H.263是是对 H.263 的支持在 Android 7.0 及更高版本中并非必需• 3GPP (.3gp) • MPEG-4 (.mp4) • Matroska (.mkv)H.264 AVC Baseline Profile (BP)Android 3.0 及以上版本是 • 3GPP (.3gp) • MPEG-4…...

密码学原理精解【8】
文章目录 概率分布哈夫曼编码实现julia官方文档建议的变量命名规范:julia源码 熵一、信息熵的定义二、信息量的概念三、信息熵的计算步骤四、信息熵的性质五、应用举例 哈夫曼编码(Huffman Coding)基本原理编码过程特点应用具体过程1. 排序概…...

2024年钉钉杯大数据竞赛A题超详细解题思路+python代码手把手保姆级运行讲解视频+问题一代码分享
初赛A:烟草营销案例数据分析 AB题综合难度不大,难度可以视作0.4个国赛,题量可以看作0.35个国赛题量。适合于国赛前队伍练手,队伍内磨合。竞赛获奖率50%,八月底出成绩,参赛人数3000队左右。本文将为大家进行…...

unity2D游戏开发01项目搭建
1新建项目 选择2d模板,设置项目名称和存储位置 在Hierarchy面板右击,create Empty 添加组件 在Project视图中右键新建文件夹 将图片资源拖进来(图片资源在我的下载里面) 点击Player 修改属性,修好如下 点击Sprite Editor 选择第二…...

删除的视频怎样才能恢复?详尽指南
在日常生活中,我们有时会不小心删除一些重要的视频文件,或者在整理存储空间时不慎丢失了珍贵的记忆片段。这时候,我们可以通过一些数据恢复工具和技巧,找回这些被删除的视频。本文将详细介绍几种常见且有效的视频恢复方法…...

LeetCode160 相交链表
前言 题目: 160. 相交链表 文档: 代码随想录——链表相交 编程语言: C 解题状态: 没思路… 思路 依旧是双指针法,很巧妙的方法,有点想不出来。 代码 先将两个链表末端对齐,然后两个指针齐头并…...

高性能响应式UI部件DevExtreme v24.1.4全新发布
DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac,…...

Python实现Java mybatis-plus 产生的SQL自动化测试SQL速度和判断SQL是否走索引
Python实现Java mybatis-plus 产生的SQL自动化测试SQL速度和判断SQL是否走索引 文件目录如下 │ sql_speed_test.py │ ├─input │ data-report_in_visit_20240704.log │ resource_in_sso_20240704.log │ └─outputdata-report_in_visit_20240704.cs…...

UDP的报文结构及其注意事项
1. 概述 UDP(User Datagram Protocol)是一种无连接的传输层协议,它提供了一种简单的数据传输服务,不保证数据的可靠传输。在网络通信中,UDP通常用于一些对实时性要求较高、数据量较小、传输延迟较低的应用,…...

MySQL深度分页问题深度解析与解决方案
文章目录 引言深度分页问题的原因解决方案方案一:使用主键索引优化方案二:使用子查询优化方案三:使用INNER JOIN优化方案四:使用搜索引擎 最佳实践结论 引言 在处理包含数百万条记录的大型数据表时,使用MySQL的LIMIT进…...

C#类型基础Part1-值类型与引用类型
C#类型基础Part1-值类型与引用类型 参考资料前言值类型引用类型装箱和拆箱 参考资料 《.NET之美–.NET关键技术深入与解析》 前言 C#中的类型一共分为两类,一类是值类型(Value Type),一类是引用类型(Reference Type)…...

被上市公司预判的EPS增速分析
EPS增速对二级市场投资和估值有着很显著的影响,上市公司显然也知道这一点。对于想要做市值管理的上市公司来说,调节EPS增速比调节EPS更加有效。因此《穿透财报:读懂财报中的逻辑与陷阱》中的作者在第四章正式提出了二级市场财务分析中的额动态…...

快速入门了解Ajax
博客主页:音符犹如代码系列专栏:JavaWeb关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Ajax的初识 意义:AJAX(Asynchronous JavaScript and…...

FPGA开发——呼吸灯的设计
一、原理 呼吸灯的原理主要基于PWM(脉冲宽度调制)技术,通过控制LED灯的占空比来实现亮度的逐渐变化。这种技术通过调整PWM信号的占空比,即高电平在一个周期内所占的比例,来控制LED灯的亮度。当占空比从0%逐渐变化到1…...

【数据结构】二叉树链式结构——感受递归的暴力美学
前言: 在上篇文章【数据结构】二叉树——顺序结构——堆及其实现中,实现了二叉树的顺序结构,使用堆来实现了二叉树这样一个数据结构;现在就来实现而二叉树的链式结构。 一、链式结构 链式结构,使用链表来表示一颗二叉树…...

开始尝试从0写一个项目--后端(三)
器材管理 和员工管理基本一致,就不赘述,展示代码为主 新增器材 表设计: 字段名 数据类型 说明 备注 id bigint 主键 自增 name varchar(32) 器材名字 img varchar(255) 图片 number BIGINT 器材数量 comment VARC…...