Linux|ubuntu22.04安装CUDA最新完整教程

文章目录

  • 一、安装前准备工作
    • 查看GPU和型号
    • 查看GCC版本
      • *下载gcc12
    • *检查驱动
  • 二、安装CUDA Toolkit
    • *安装驱动
  • 三、安装后的工作
    • 必要操作
    • 推荐的操作
      • 开启守护进程模式
      • 删除本地下载安装包
  • 四、验证
  • 删除CUDA
  • 常见问题及解决方案
    • 还需要安装cuDNN吗?
    • nvcc: No such file or directory
    • “error while loading shared libraries: <lib name>: cannot open shared object file: No such file or directory”

流程:
安装前检查->安装->安装后配置->验证

版本: CUDA12.5
系统: Ubuntu22.04
内核: 6.5.0-35-generic

本文参考官方指南CUDA Installation Guide for Linux

一、安装前准备工作

查看GPU和型号

spci | grep -i nvidia

看到类似内容,我这是1660 S

01:00.0 VGA compatible controller: NVIDIA Corporation TU116 [GeForce GTX 1660 SUPER] (rev a1)

查看GCC版本

gcc --version

虽然官方说6.0~13.0版本的都可以,但实测11.4版本的不行,可能有BUG。
若为11.4版本的,请下载12版本。

*下载gcc12

不需要下载的请跳过!

# 查看之前的版本
> gcc --version
gcc-11 (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.

# 安装gcc12
> sudo apt-get install gcc-12 
# 将他添加到gcc备选组中,且设置优先级为12
> sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
  • /usr/bin/gcc 主链接

  • gcc 组名

  • /usr/bin/gcc-12 要添加进组的命令

  • 12 优先级,数字越大约优先

查看gcc的链接设置,看一眼配置对了没

sudo update-alternatives --config gcc

这时候查看gcc版本就是12.4了

gcc --version

*检查驱动

非必要行为!我们在安装toolkit的时候会自动安装GPU驱动

二、安装CUDA Toolkit

https://developer.nvidia.com/cuda-downloads

按照你的来,我这是选择的本地安装,就是下载一个安装包,在本地安装,deb类型的安装包是由APT管理,方便更新与卸载。

在这里插入图片描述

截止到目前位置为12.5版本,具体命令我这直接复制官网的,一条一条执行。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.5.0/local_installers/cuda-repo-ubuntu2204-12-5-local_12.5.0-555.42.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-5-local_12.5.0-555.42.02-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-5-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-5

*安装驱动

上一步会自动安装GPU驱动的, 如果没有安装驱动成功,才去选择手动安装。
检查驱动版本nvidia-smi

安装命令,最新版

sudo apt-get install -y cuda-drivers

如果你想要安装指定版本,2选1即可

sudo apt-get install -y cuda-drivers-555

三、安装后的工作

必要操作

设置环境变量,注意路径哈,是你安装版本的路径

export PATH=/usr/local/cuda-12.5/bin${PATH:+:${PATH}}

若想使其永久生效,,添加到.bashrc配置文件里面,如果你使用zsh,添加到.zshrc里面

# 打开配置文件
vi ~/.bashrc
# 添加到最后一行,保存并退出
export PATH=/usr/local/cuda-12.5/bin${PATH:+:${PATH}}

# 重新激活配置文件
source ~/.bashrc

如果你选择安装cuda toolkit的不是deb安装形式,而是runfile方式,还需要手动添加动态链接库的路径.注意路径哈,是你安装版本的路径

export LD_LIBRARY_PATH=/usr/local/cuda-12.5/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

推荐的操作

开启守护进程模式

开启守护进程持久化模式,比传统持久化模式更优雅稳定elegent and robust

sudo /usr/bin/nvidia-persistenced --verbose

如果没有任何提示,说明启动成功,linux惯例"没有消息就是最好的消息"

删除本地下载安装包

删除命令,按照你安装toolkit时的版本填入

sudo apt-get remove --purge "cuda-repo-<distro>-X-Y-local*"

我的删除命令

sudo apt-get remove --purge "cuda-repo-ubuntu2204-12-5-local*"

四、验证

验证CUDA版本,这是runtime运行时的版本
nvcc -V

验证驱动版本
nvidia-smi 右上角显示的cuda版本是驱动的CUDA版本 向下兼容,兼容比这个数字低的cuda 运行时版本

比如 nvidia-smi显示的cuda是12.5, 而 nvcc -V显示的是12.1这是没有问题的。但反过来不行哦!得更新驱动

二者的CUDA的区别
驱动API通常用于创建,因为它可以做更加精细化的控制,cuda RUNTIME API通常在运行使用时调用。
详细区别https://docs.nvidia.com/cuda/cuda-runtime-api/driver-vs-runtime-api.html

删除CUDA

如果你安装遇到问题,折腾好久没搞好!请先清除所有关于cuda的文件,再重新安装。

注意,在清除的时候,cuda依赖的其他库也可能会被删除!!可能会导致你的其他程序无法正常运行!

在删除的时候,注意下有哪些库被卸载了

删除命令

# 删除CUDA TOOLKIT
sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
 "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"

# 删除驱动
sudo apt-get --purge remove "*nvidia*" "libxnvctrl*"

# 清除一些依赖和安装包
sudo apt-get autoremove

常见问题及解决方案

还需要安装cuDNN吗?

不需要,安装CUDA Toolkit的时候,已经装好了
如何查看?
ldconfig -p | grep cudnn
显示结果:

	libcudnn_ops.so.9 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcudnn_ops.so.9
	libcudnn_ops.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libcudnn_ops.so
	libcudnn_heuristic.so.9 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcudnn_heuristic.so.9
	libcudnn_heuristic.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libcudnn_heuristic.so
	libcudnn_graph.so.9 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcudnn_graph.so.9

nvcc: No such file or directory

没有添加环境变量!请仔细看安装后的工作哦

export PATH=/usr/local/cuda-12.5/bin${PATH:+:${PATH}}

“error while loading shared libraries: : cannot open shared object file: No such file or directory”

没有设置动态库链接变量

export LD_LIBRARY_PATH=/usr/local/cuda-12.5/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

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

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

相关文章

Java-常见面试题收集(十六)

二十五 RocketMQ 1 消息队列介绍 消息队列&#xff0c;简称 MQ&#xff08;Message Queue&#xff09;&#xff0c;它其实就指消息中间件&#xff0c;当前业界比较流行的开源消息中间件包括&#xff1a;RabbitMQ、RocketMQ、Kafka。&#xff08;一个使用队列来通信的组件&…

信捷XD系列PLC通讯失败程序无法下载如何设置

如题:最近在使用信捷PLC&#xff0c;有时会出现通讯不上的问题&#xff0c;下面将通讯配置步骤及注意事项分享。 一、确保PLC通电&#xff0c;电脑使用USB通讯线和PLC连接。 二、打开程序&#xff0c;点击串口标识&#xff0c;会弹出通信配置窗口。 三、双击USB通讯这条进行设…

【AI如何帮你编写测试用例并输出表格格式】

1、工具&#xff1a;顺便使用一款生成式AI即可&#xff0c;此处用的是ChatGPT&#xff0c;Kimi这两个工具试验。 2、首先要拿到需求文档&#xff0c;根据需求文档向AI发出如下指令&#xff08;Prompt&#xff09; “请根据下面这段需求&#xff0c;编写测试用例&#xff1a; …

Spark-键值对RDD数据分区

Spark概述 Spark-RDD概述 在Spark中&#xff0c;键值对RDD数据分区是指将键值对RDD中的数据分布到集群中的不同节点上的过程。 Spark目前支持Hash分区、Range分区和用户自定义分区。Hash分区为当前的默认分区。 分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle后…

【Docker系列】 Docker容器具体信息查询

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

TCP通信流程

TCP通信流程 TCP和UDP的区别 TCP&#xff08;传输控制协议&#xff09; 面向连接的&#xff1a;在数据传输之前&#xff0c;TCP 需要三次握手来建立连接。可靠的传输&#xff1a;通过序列号、确认响应、重传机制、流量控制和拥塞控制来保证数据正确传输。基于字节流&#xf…

Redis崩溃后,如何进行数据恢复的?no.24

本课时我们主要学习通过 RDB、AOF、混合存储等数据持久化方案来解决如何进行数据恢复的问题。 Redis 持久化是一个将内存数据转储到磁盘的过程。Redis 目前支持 RDB、AOF&#xff0c;以及混合存储三种模式。 RDB Redis 的 RDB 持久化是以快照的方式将内存数据存储到磁盘。在…

MongoDB基础入门到深入(八)MongoDB整合SpringBoot、Chang Streams

文章目录 系列文章索引十五、MongoDB整合SpringBoot1、环境准备2、集合操作3、文档操作&#xff08;1&#xff09;相关注解&#xff08;2&#xff09;创建实体&#xff08;3&#xff09;添加文档&#xff08;4&#xff09;查询文档&#xff08;5&#xff09;更新文档&#xff0…

Science| 单体耦合纤维实现无芯片纺织电子(纤维器件/智能织物/柔性可穿戴电子)

东华大学Hongzhi Wang,Chengyi Hou和Qinghong Zhang团队在《Science》上发布了一篇题为“Single body-coupled fiber enables chipless textile electronics”的论文。论文内容如下: 一、 摘要 智能纺织品为将技术融入日常生活中提供了理想的平台。然而,目前的纺织电子系统…

非关系型数据库NOSQL

文章目录 1. NOSQL 概述2. 相关理论基础2.1 一致性2.2 分区2.3 存储分布2.4 查询模型 3. NOSQL 数据库的种类3.1 文档存储3.2 键值存储3.3 列存储3.3 图存储 4. NOSQL 应用案例和新技术4.1 HBase 数据库4.2 云数据库 GeminiDB 非关系型的数据库 NOSQL (Not Only SQL)是对不同于…

paligemma、Grounding-DINO-1.5简单无需标注无需训练直接可以使用的VLM图像到文本模型

1、paligemma 参考:https://github.com/google-research/big_vision/blob/main/big_vision/configs/proj/paligemma/README.md 模型架构: 文本与图像特征一起送入大模型 在线体验网址: https://huggingface.co/spaces/big-vision/paligemma 通过文字prompt既可与图片对话…

Windows11下使用Qt5.14.2编译QtXlsx驱动详细步骤

原有&#xff1a;由于系统需要将QTableWidget表格中的数据导出、在Windows下最开始使用Excel.Application组件实现了导出功能&#xff0c;后面将代码转换到Ubuntu20.04下进行编译&#xff0c;发现项目.pro文件中的QT axcontainer和代码.h文件中的#include <QAxObject>跟…

运维开发.索引引擎ElasticSearch.倒序索引的概念

运维开发.索引引擎ElasticSearch 倒序索引的概念 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn…

ConCurrentHashMap源码学习

ConCurrentHashMap在JDK7之前是ReentrantLockSegmentHashEntry&#xff0c;在JDK8及之后是synchronizedCASNode红黑树。 JDK7之前 对于JDK7的版本实现&#xff0c;ConcurrentHashMap为了提高本身的并发能力&#xff0c;在内部采用了一个Segment结构&#xff0c;一个Segment其…

路由器不能端口映射什么原因?如何设置内网映射?

近期有小伙伴发来求助信息&#xff0c;他以前开游戏服务器和别人一起玩&#xff0c;那个时候端口映射还好&#xff0c;不知道哪一天开始突然不行了&#xff0c;已经是公网了&#xff0c;光猫是桥接的状态&#xff0c;连路由器都换了&#xff0c;就是不能端口映射开服务器&#…

如何使用Suno:免费的AI歌曲生成器

文章目录 Suno AI 是什么&#xff1f;Suno AI 如何工作&#xff1f;选择Suno AI的理由&#xff1a;核心优势易于操作多样化创作灵活的定价策略版权保障技术突破 如何使用Suno AI创作歌曲&#xff1f;第1步&#xff1a;注册Suno AI账户第2步&#xff1a;输入提示词创建第 3 步&a…

酷开系统 | 酷开科技把握智慧先机 AI赋能家庭场景

智慧化是当今世界科技发展的前沿领域之一。现在的智慧化&#xff0c;也正在逐步成为我们日常生活的一部分。电视系统也进入了数字化时代&#xff0c;AI的应用正在不断扩展&#xff0c;其潜力似乎无穷无尽。 酷开科技深耕人工智能技术&#xff0c;在提升语音体验、强化智能家居…

leetcode230 二叉搜索树中第K小的元素

题目 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 1 开始计数&#xff09;。 示例 输入&#xff1a;root [5,3,6,2,4,null,null,1], k 3 输出&#xff1a;3 解析 这道题应该是能做出…

小程序丨数据功能如何使用

查询发布完成后&#xff0c;如发现信息有误或想要修改信息&#xff0c;老师可以使用数据功能在线修改已发布的查询内容。 数据功能包含导出、添加、编辑、更多操作&#xff0c;下面来教大家如何使用吧。 &#x1f4cc;使用教程 数据功能主要用于在线修改已发布的查询内容&#…