一文搞定cuda版本、显卡驱动及多CUDA版本管理

安装cuda是每个AI从业人员必经之路。网上关于cuda、显卡驱动已经相关命令很多都解释不清楚,于是本文梳理一下,既方便自己记忆,也方便小白学习。

CUDA

首先,CUDA版本,一般指cuda-toolkit,即cuda开发工具包,我们一般安装上层软件如pytorch等,都需要对应的toolkit版本就是指的CUDA版本。本机的CUDA版本,该怎么查询呢?

nvcc -V

这个命令,查到的就是本机正在用的cuda开发工具包的版本。注意,"nvidia-smi"查到的未必是最准确的本机cuda版本,后面我会给解释。

经过老黄团队的不懈努力,现在的cuda安装变得异常简单,有手就行。以cuda 11.3安装为例子,只需要简单搜索即可:

google search
我们很容易得到这个:

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

当然,还有一个很方便的途径来获得下载链接:
https://developer.nvidia.com/cuda-toolkit-archive

注意:通过这个方法一键安装cuda时,会有一个选项可以选择是否安装对应的显卡驱动。如果你本地有多个CUDA的时候,这个显卡驱动慎选。
CUDA Installer
安装完驱动以后,才可以使用"nvidia-smi",这个命令查询的是本机显卡驱动所对应的cuda版本,未必是现在用的cuda工具包的版本。于是,经常出现"nvidia-smi"和"nvcc -V"版本不一致的情况。

知识点
1, 一台机器可以有多个CUDA版本,多个CUDA版本可以通过软连接进行管理;
2,一台机器通常只能安装一个显卡驱动;
3,对于严格要求显卡驱动版本的项目(涉及底层编译),需要重新安装对应的显卡驱动以支持对应cuda版本;
4,对于不严格要求显卡驱动版本的项目,我们简单修改CUDA软连接即可切换CUDA版本,这个情况下"nvidia-smi"和"nvcc -V"版本不一致也不会影响项目的运行。

现在写一下具体操作:
所有的cuda默认安装路径是:“/usr/local/”
我们定一个软链接目标地址:“/usr/local/cuda”,将我们需要切换的cuda版本链接到这个目标地址即可。
我们需要在~/.bashrc(有的是"~/.zshrc")加入对应的软链接目标地址:

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

注意:这里不要加入版本号(如PATH=/usr/local/cuda-11.3/bin:$PATH),不然不好做多版本CUDA管理。
我们source一下,就能激活这两句命令:(zsh用户自动切换成zshrc)

source ~/.bashrc

完成这一步,就可以:

nvcc -V

可以看到准确的cuda开发工具包的版本了,我们pytorch等的安装参照这个版本对应即可。

如何切换CUDA版本呢?

cd /usr/local/
sudo rm cuda
sudo ln -s cuda-11.8 cuda
ll #查看是否切换成功
# cuda -> cuda-11.8

然后看一下nvcc -V,你就会发现,CUDA版本已经切换。不过,你用"nvidia-smi"时,会发现cuda version还是没变。

如何改变"nvidia-smi"中显示的cuda version呢? 答:重新显卡安装驱动。这里实在要注意的是:显卡驱动会影响本机显示器的显示,如果是带图形界面的linux需要先关闭图形界面。
关闭图形界面:

sudo service lightdm stop

卸载当前版本的显卡驱动:《卸载nvidia显卡驱动》

结论:我们在做多CUDA版本管理时,需要将多个CUDA版本安装到"/usr/local/"下,通过软链接切换。在涉及显卡驱动的更换时,我们需要将多个对应的显卡驱动安装文件,放到本地,随时准备安装这个版本的驱动。

如何获得对应CUDA版本的显卡驱动?答:直接运行CUDA runfile(即上文提到的cuda_11.3.0_465.19.01_linux.run),我们可以看到对应的nvidia驱动版本,然后到网上search对应的NVIDIA-Linux-x86_64-xxxx.run运行即可。当然,这一步也需要研究一下本机显卡的是否支持这个版本的驱动。
操作过程如下:

sudo chmod a+x NVIDIA-Linux-x86_64-465.19.01.run # 变成可执行文件
sudo ./NVIDIA-Linux-x86_64-465.19.01.run  --no-opengl-files # 执行安装

有一种说法(ChatGPT也这么说):

新版本的驱动会兼容老版本的CUDA。所以理论上我们安装一个最新的nvidia driver,就可以通过软链接来切换CUDA使用。我目前用这种方法,没出现太大的问题,仅供参考~

本文全部由本人整理,转发请询得同意,有问题欢迎留言交流~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源绘图工具Rnote使用体验分享

软件介绍 Rnote,这款致力于提供矢量绘图、手写笔记以及文档注释功能的免费开源软件,逐渐成为了学生、教师以及绘图板用户的新宠。其独特之处在于,它不仅支持PDF和图片的导入导出,还拥有无限画布和适应各种屏幕大小的界面设计,这些功能使得Rnote在众多同类软件中脱颖而出。…

python抽取pdf中的参考文献

想将一份 pdf 论文中的所有参考文献都提取出来,去掉不必要的换行,放入一个 text 文件,方便复制。其引用是 ieee 格式的,形如: 想要只在引用序号(如 [3])前换行,其它换行都去掉&…

【中霖教育口碑】什么情况下不允许参加注册会计师考试?

对于某些特殊情况,存在明确的禁止性规定,是不能参加注册会计师考试的,中霖为大家分享一下!关于注册会计师全国统一考试的资格条件,需明确以下要点: 1. 针对在前期注册会计师统一考试中因违反规定而受到禁止参加考试的…

awesome-ai4s 现已开源!超全 AI for Science 学术论文与数据资源汇总,持续更新ing

2018 年中国科学院院士鄂维南提出「AI for Science」概念,强调利用 AI 学习科学原理、创造科学模型来解决实际问题。同年,AlphaFold 崭露头角,从 43 种蛋白质中准确预测出了 25 种蛋白质结构。2021 年,AlphaFold 2 开源并预测了 9…

现代前端工程化实践:Git、Husky、Commitlint与PNPM的协同作战

引言 Git Husky 与 Commitlint 是两个在 Git 工作流程中非常实用的工具,它们可以帮助团队维护代码质量和提交规范。Husky 是一个 Git 钩子管理器,允许你在仓库级别方便地配置钩子脚本;而 Commitlint 则是用来规范 Git 提交信息的工具&#x…

上位机图像处理和嵌入式模块部署(mcu之芯片选择)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 目前市面上的mcu很多,有国产的,有进口的,总之种类很多。以stm32为例,这里面又包括了stm32f1、stm32…

AWS EC2 连接 AWS RDS(Mysql)

1 创建RDS数据库 点击创建数据库 引擎选项 模板 设置 连接 2 EC2连接Mysql $ sudo yum list mariadb* Installed Packages mariadb-connector-c.x86_64 3.1.13-1.amzn2023.0.3 amazonl…

飞睿智能超宽带UWB标签模组,简化设备开发流程,实时高速率数传交互应用

在科技飞速发展的今天,UWB超宽带技术因其高精度、低功耗和高安全性的特点,正逐渐成为智能设备定位和数据传输的新宠。 UWB技术是一种无线通信技术,它通过使用非常宽的频带进行数据传输,从而实现高数据传输速率和高精度定位。 飞…

远动通讯屏的原理和应用

远动通讯屏的原理和应用 远动通讯屏,是一种集显示和远程控制于一体的智能化控制设备。它可以通过网络、通信线路等方式实现与远程设备的通讯和交互,从而实现远程监控和控制。 远动通讯屏实现远程控制的核心原理是基于PLC(Programmable Logic …

彩色进度条(C语言版本)

.h文件 #include<stdio.h> #include<windows.h>#define NUM 101 #define LOAD_UP 50 #define LOAD_DOWN 60 #define SLEEP_SLOW 300 #define SLEEP_FAST 70 版本1&#xff1a;&#xff08;初始版&#xff09; //v1 #include "progress.h" int main() …

C# GetManifestResourceStream 获取项目资源为null解决方案(亲测)

GetManifestResourceStream 获取项目资源为null 使用Stream s assembly.GetManifestResourceStream(Assembly.GetExecutingAssembly().GetName().Name resourceName) 获取资源文件&#xff0c;返回流为null&#xff0c;如图所示&#xff1a; 解决方案 设置资源文件的 属性&…

创建一个python的Django项目文件

创建一个python的Django项目文件(内含conda) 文章目录 创建一个python的Django项目文件(内含conda)前言一、conda环境的下载二、配置conda的环境变量三、激活管理环境四、下载Django五、创建Django项目文件六、启动Django文件七、用pycharm直接创建Django文件 前言 大家好,今天…

Android和flutter交互,maven库的形式导入aar包

记录遇到的问题&#xff0c;在网上找了很多资料&#xff0c;都是太泛泛了&#xff0c;使用后&#xff0c;还不能生效&#xff0c;缺少详细的说明&#xff0c;或者关键代码缺失&#xff0c;我遇到的问题用红色的标注了 导入aar包有两种模式 1.比较繁琐的&#xff0c;手动将aar…

Mac Pro中的开源虚拟机UTM安装ubuntu(Applce M1,M2芯片)(2)

第一步&#xff0c;先安装UTM 链接: https://blog.csdn.net/qq_38382925/article/details/139157877?spm1001.2014.3001.5501 1.在虚拟机上安装Ubuntu 1.1 选择第一个&#xff0c;回车 1.2 语言选择english 1.3 选择done continue: 1.4 输入名字、密码等 1.5 选择继续 1.…

正则表达式(知识总结篇)

本篇文章主要是针对初学者&#xff0c;对正则表达式的理解、作用和应用 正则表达式&#x1f31f; 一、&#x1f349;正则表达式的概述二、&#x1f349;正则表达式的语法和使用三、 &#x1f349;正则表达式的常用操作符四、&#x1f349;re库主要功能函数 一、&#x1f349;正…

ffmpeg-webrtc(metartc)给ffmpeg添加webrtc协议

这个是使用metrtc的库为ffmpeg添加webrtc传输协议&#xff0c;目前国内还有一个这样的开源项目&#xff0c;是杨成立大佬&#xff0c;大师兄他们在做&#xff0c;不过wili页面维护的不好&#xff0c;新手不知道如何使用&#xff0c;我专门对它做过介绍&#xff0c;另一篇博文&a…

Pytorch深度学习实践笔记1

&#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;pytorch深度学习 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

MySQL5个查询

# 总查询 EXPLAIN SELECT * FROM city; # 范围查询 EXPLAIN SELECT * from city where ID>5 and ID<20; #主键查询 EXPLAIN SELECT * from city where ID5; # 索引查询 EXPLAIN SELECT * from city where CountryCodeNLD; # 普通索引 EXPLAIn SELECT * from cit…

班组管理新篇章:打造高效沟通机制,助推团队协同发展

班组作为组织的基本单位&#xff0c;其沟通的顺畅与否直接关系到整个组织的运行效率和团队的凝聚力。建立健全的班组管理沟通机制&#xff0c;不仅是提升工作效率的关键&#xff0c;更是推动团队持续发展的核心动力。那么&#xff0c;如何建立健全的班组管理沟通机制呢&#xf…

很耐看的Go快速开发后台系统框架

序言 秉承Go语言设计思路&#xff0c;我们集成框架简单易用、扩展性好、性能优异、兼顾安全稳定&#xff0c;适合企业及初学者用来开发项目、学习。我们框架和市面上其他家设计的不同&#xff0c;简单一步做到的我们不会两步&#xff0c;框架能自动处理&#xff0c;绝不手动处…