13. Linux上CUDA的安装

这个专栏记录我学习/科研过程中遇到的一些小问题以及解决方案,一些问题可能比较蠢请见谅。自用,仅供参考。


------------------------------------------------------------------------------------

Linux上CUDA的安装


在安装之前,首先要确定NVIDIA显卡驱动版本,该版本即可安装CUDA的最高版本(例如下图当中红框信息显示,笔者能够安装的CUDA版本为 ≤ 12.2 \leq12.2 12.2。使用nvidia-smi查看显卡驱动信息。

在这里插入图片描述

此外,还需要使用uname -auname -v确认操作系统的发行版和版本编号,服务器的架构。例如下图中红色框出部分,笔者的Linux操作系统的发行版是Ubuntu,版本号是20.04;图中蓝色框出部分,笔者的服务器架构是x86(如果uname -a返回了ARM或者aarch等字样,说明服务器是ARM架构;如果返回x86、x86_64或amd64等字样,说明服务器是x86架构)。

在这里插入图片描述

接着,在NVIDIA官网上找到适合的CUDA版本,并按照之前查到的服务器和操作系统信息,选择对应的架构、发行版和版本号(如下两幅图的图红框所示)

在这里插入图片描述

在这里插入图片描述

对于安装类型(Installer Type),建议选择runfile (local)(如上图蓝色框所示) ,以便适配多版本环境。选择完成后,安装代码会显示出来(如上图粉色框所示),依次运行这两段指令注意,安装过程需要使用sudo(第二段指令),否则有可能无法安装!

以下是这几种不同安装类型的区别:

  1. deb (local):直接下载包含CUDA Toolkit的完整DEB包文件,通过本地文件来安装。下载文件较大,但安装过程不需要依赖网络连接。安装完成后可以正常使用apt命令更新CUDA相关内容。
  2. deb (network):下载一个较小的DEB安装包,该包会添加NVIDIA的官方源并自动配置,随后通过网络从官方源中下载CUDA Toolkit的内容。虽然下载的初始文件较小,但在安装过程中需要持续的网络连接。安装完成后可以正常使用apt命令更新CUDA相关内容。
  3. runfile (local):下载完整的可执行.run 文件,通过运行该文件进行安装。不依赖系统包管理工具(如apt),允许用户自定义安装路径,并且提供是否安装显卡驱动的选项。适合需要安装多个CUDA版本或多个版本来回切换的用户。

在这里插入图片描述

.run文件下载完成后(第一段指令执行完成后),执行第二段指令。执行后等待一段时间(通常30s-1min左右),如果之前已经安装了驱动,则会显示“Existing package manager installation of the driver found.”,此时直接选择Continue取消驱动安装即可

在这里插入图片描述

接下来,键入accept再回车,以同意用户条例。

在这里插入图片描述

正式安装前,要将显卡驱动安装的选项取消(调整到对应选项后按下回车即可。由于笔者在之前就已经安装了驱动,因此此处不需要再次安装),然后选择安装(Install)。

在这里插入图片描述

如果第二段指令没有sudo权限,则可能会导致在这一步出现错误:

在这里插入图片描述

如果在安装CUDA时出现“A symlink already exists at /usr/local/cuda. Update to this installation?”的提示(如下图),说明在/usr/local/cuda目录中已经存在一个符号链接(symlink)。这通常是因为之前已经安装了CUDA Toolkit,或者安装了多个版本的CUDA,并在/usr/local/cuda创建了符号链接(通常指向具体版本目录,如/usr/local/cuda-11.8)。UDA的安装程序尝试在此位置创建一个新的符号链接,但检测到已有链接存在,因此提示是否要更新。此处建议更新(选择yes)

如果希望当前安装的CUDA版本成为默认版本,可以选择更新该符号链接,此时新安装的CUDA将覆盖现有的符号链接,并指向新版本的安装目录(如 /usr/local/cuda-12.0);如果希望保留现有CUDA版本并不希望覆盖,可以选择拒绝,然后根据需求手动管理符号链接。通常推荐前者。

等待安装结束即可。安装成功见下图:

在这里插入图片描述

此时,/usr/local/目录下能看到刚刚安装的CUDA-12.0。

在这里插入图片描述

这时,安装流程仍未结束,配置环境中需要添加路径。因此,我们需要在bash的用户个性化设置文件.bashrc(在bash每次启动时都会加载.bashrc文件中的内容,并根据内容定制当前bash的配置和环境)中添加新安装的CUDA-12.0。这一点在安装成功的总结(Summary)中有提到:

Please make sure that

  • PATH includes /usr/local/cuda-12.0/bin
  • LD_LIBRARY_PATH includes /usr/local/cuda-12.0/lib64, or, add /usr/local/cuda-12.0/lib64 to /etc/ld.so.conf and run ldconfig as root

下一步,使用nano打开.bashrc

sudo nano ~/.bashrc

nano的操作方法见这篇博客。而我们要做的,是在文档末尾加上三行代码(如下图红框所示,尤其要注意蓝色的部分,需要替换为相应的CUDA版本),如果该代码存在,则将蓝色框内的CUDA版本号替换为对应版本即可

export PATH=/usr/local/cuda-12.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda-12.0

在这里插入图片描述

按下ctrl+X退出nano,退出前保存文档。接下来,更新环境:

source ~/.bashrc
sudo ldconfig

至此,所有安装步骤已经完成。键入nvcc -V查看CUDA版本以检查是否成功安装:

在这里插入图片描述

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

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

相关文章

ThinkPHP6门面(Facade)

门面 门面(Facade) 门面为容器中的(动态)类提供了一个静态调用接口,相比于传统的静态方法调用, 带来了更好的可测试性和扩展性,你可以为任何的非静态类库定义一个facade类。 系统已经为大部分…

(计算机毕设)基于SpringBoot+Vue的房屋租赁系统的设计与实现

博主可接毕设设计!!! 各种毕业设计源码只要是你有的题目我这里都有源码 摘 要 社会的发展和科学技术的进步,互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。互…

[Admin] Dashboard Filter for Mix Report Types

Background RevOps team has built a dashboard for sales team to track team members’ performance, but they’re blocked by how to provide a manager view based on sales’ hierarchy. Therefore, they seek for dev team’s help to clear their blocker. From foll…

游戏引擎学习第19天

介绍 这段内容描述了开发者在进行游戏开发时,对于音频同步和平台层的理解和调整的过程。以下是更详细的复述: 开发者表达了他希望今天继续进行的工作内容。他提到,昨天他讲解了一些关于音频的内容,今天他想稍微深入讲解一下他正…

高阶云服务-ELB+AS

ELBAS 弹性负载均衡弹性伸缩 原来1台web服务器不满足相应,现部署多台提供相同服务; 由于多个服务器多个ip该如何提供给应用呢? 引申出负载均衡(HAProxy,LVS01四层,Nginx七层) 防单点故障做主备…

STM32设计防丢防摔智能行李箱-分享

目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着科技的不断发展,嵌入式系统、物联网技术、智能设备…

Mysql中REPLACE INTO详解及和INSERT INTO的区别

前言 我们在进行数据库操作的时候,经常会遇到这样的场景: 首先判断数据是否存在;如果不存在,则插入;如果存在,则更新。 博主之前是是Java来进行逻辑判断,例如: 看起来似乎也很简洁…

基于Java Springboot发艺美发店管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

element ui 走马灯一页展示多个数据实现

element ui 走马灯一页展示多个数据实现 element ui 走马灯一页展示多个数据实现 element ui 走马灯一页展示多个数据实现 主要是对走马灯的数据的操作,先看js处理 let list [{ i: 1, name: 1 },{ i: 2, name: 2 },{ i: 3, name: 3 },{ i: 4, name: 4 },]let newL…

ACM招新赛<赛后题解与反思总结>③

问题 A: 数数(Easy) 题目描述 某一天,工作室需要统计人数,现在小劉开始数人数,但是由于小劉数学极差,因此他数数的时候总是会忘记数数字8,也就是说他数完7以后,就会直接数数字9,直观的讲就是数字…

网络安全:我们的安全防线

在数字化时代,网络安全已成为国家安全、经济发展和社会稳定的重要组成部分。网络安全不仅仅是技术问题,更是一个涉及政治、经济、文化、社会等多个层面的综合性问题。从宏观到微观,网络安全的重要性不言而喻。 宏观层面:国家安全与…

八、鸿蒙开发-网络请求、应用级状态管理

提示:本文根据b站尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程课整理 链接指引 > 尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程 文章目录 一、网络请求1.1 申请网络访问权限1.2 安装axios库1.2.1 配置环境变量1.2.2 第二步&…

【MySQL实战45讲笔记】基础篇——MySQL 的基础架构

目录 1. MySQL 的基础架构1.1 连接器1.2 查询缓存1.3 分析器1.4 优化器1.5 执行器 1. MySQL 的基础架构 我们由一个问题引入对MySQL 基础架构的学习:一条SQL查询语句是如何执行的? mysql> select * from T where ID10;通过分析学习MySQL…

计算机网络 (5)数据通信的基础知识

前言 数据通信是一种以信息处理技术和计算机技术为基础的通信方式,它通过数据通信系统将数据以某种信号方式从一处传送到另一处,为计算机网络的应用和发展提供了技术支持和可靠的通信环境,是现代通信技术的关键部分。 一、数据通信的基本概念…

【操作系统笔记】目录

【操作系统笔记】操作系统框架https://blog.csdn.net/Resurgence03/article/details/142624262 【操作系统笔记】CPU管理https://blog.csdn.net/Resurgence03/article/details/142621526 【操作系统笔记】内存管理https://blog.csdn.net/Resurgence03/article/details/142669…

linux之调度管理(7)-SMP cpu 的spin-table启动

一、smp启动总体介绍 soc在启动阶段除了一些特殊情况外(如为了加快启动速度,在bl2阶段通过并行加载方式同时加载bl31、bl32和bl33镜像),一般都没有并行化需求。因此只需要一个cpu执行启动流程即可,这个cpu被称为primar…

基于Java Springboot活力健身馆管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

BERT-TFBS:一种基于 BERT 的新型模型,通过迁移学习预测转录因子结合位点

转录因子(TF)是通过结合 DNA 序列中的转录因子结合位点(TFBS)来调控基因转录所必需的蛋白质。准确预测 TFBS 有助于设计和构建基于 TF 的代谢调控系统。尽管已经开发了各种用于预测 TFBS 的深度学习算法,但预测性能仍有…

前端pdf预览方案

前端pdf预览方案 pdf预览一般不需要前端生成pdf文件,pdf文件一般是通过接口,获取pdf文件【responseType:‘blob’,】或二进制文件流【responseType: ‘arraybuffer’,】或者已有的pdf文件。 前端PDF预览通常是通过读取现有的PDF文件,并使用…

得物彩虹桥架构演进之路-负载均衡篇

文 / 新一 一、前言 一年一更的彩虹桥系列又来了,在前面两期我们分享了在稳定性和性能2个层面的一些演进&优化思路。近期我们针对彩虹桥 Proxy 负载均衡层面的架构做了一次升级,目前新架构已经部署完成,生产环境正在逐步升级中&#xf…