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

news2024/11/23 15:34:16

文章目录

  • 一、安装前准备工作
    • 查看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}}

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

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

相关文章

GitKraken克隆Git仓库

克隆Git仓库 修改本地仓库 在此新增了一个test.txt文件 GitKraken提醒有一处改变 暂存&#xff08;Stage&#xff09;该文件&#xff0c;添加描述后提交修改&#xff1a; 修改成功&#xff1a;

【数据结构】【C语言】堆~动画超详细解读!

目录 1 什么是堆1.1 堆的逻辑结构和物理结构1.2 堆的访问1.3 堆为什么物理结构上要用数组?1.4 堆数据上的特点 2 堆的实现2.1 堆类型定义2.2 需要实现的接口2.3 初始化堆2.4 销毁堆2.5 堆判空2.6 交换函数2.7 向上调整(小堆)2.8 向下调整(小堆)2.9 堆插入2.10 堆删除2.11 //堆…

Flink常见面试题总结

文章目录 1. 简单介绍一下Flink2. Flink 的运行必须依赖Hadoop组件吗?3. Flink 和 Spark Streaming 的区别&#xff1f;4. Flink集群角色5. Flink核心概念5.1 并行度5.2 算子链&#xff08;Operator Chain&#xff09;5.3 任务槽&#xff08;Task Slots&#xff09;5.4 任务槽…

Python | Leetcode Python题解之第108题将有序数组转换为二叉搜索树

题目&#xff1a; 题解&#xff1a; class Solution:def sortedArrayToBST(self, nums: List[int]) -> TreeNode:def helper(left, right):if left > right:return None# 选择任意一个中间位置数字作为根节点mid (left right randint(0, 1)) // 2root TreeNode(nums…

cesium绘制三角网可视化及mesh网格数据解析

可视化运行效果(水质污染扩散) 实现运行效果 术语 Mesh网格数据解析 Mesh&#xff08;网格&#xff09;在不同领域有不同的应用和定义。在计算机网络中&#xff0c;Mesh网络指的是一种无中心的网状结构&#xff0c;每个节点都与其他节点相连。而在3D计算机图形学中&#…

计算机专业实习生应该去哪实习?

计算机专业实习生可以选择在各种不同类型的公司和组织中实习。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&#xff0c;我在后台发给你。 这取…

局部直方图均衡化去雾算法

目录 1. 引言 2. 算法流程 3. 代码 4. 去雾效果 1. 引言 局部直方图算法是一种基于块的图像去雾方法&#xff0c;它将图像分割为若干个块&#xff0c;并在每个块内计算块的局部直方图。通过对各个块的直方图进行分析和处理&#xff0c;该算法能够更好地适应图像中不同区域的…

聚鼎科技:现在的装饰画怎么样

当代装饰画以其多样化的风格和形式&#xff0c;在装点生活的同时反映了现代人的审美趣味和文化追求。如今&#xff0c;装饰画不再局限于传统的油画、水彩或版画&#xff0c;它们已经跨越了材质与技法的界限&#xff0c;呈现出前所未有的丰富性。 走进任一家装潢精致的咖啡馆或现…

基于机器学习模型预测信用卡潜在用户(XGBoost、LightGBM和Random Forest)

基于机器学习模型预测信用卡潜在用户&#xff08;XGBoost、LightGBM和Random Forest&#xff09; 随着数据科学和机器学习的发展&#xff0c;越来越多的企业开始利用这些技术来提高运营效率。在这篇博客中&#xff0c;我将分享如何利用机器学习模型来预测信用卡的潜在客户。此…

angr使用学习

首先我是直接在kali中安装的&#xff0c;也是边练边学的。 嗯&#xff0c;要在纯净python环境&#xff0c;所以是在 virtualenv 虚拟环境里&#xff0c;也不是特别会用这个&#xff0c;按照教程一步步做的 source venv/bin/activate 进入了对应环境 退出是 deactivate en,ipy…

pdf文件怎么编辑?分享3个专业的pdf软件!

在数字化时代&#xff0c;PDF文件已成为我们工作、学习中的得力助手。然而&#xff0c;面对需要修改的PDF文件&#xff0c;许多人却感到无从下手。今天&#xff0c;就让我们一起探索如何轻松编辑PDF文件&#xff0c;并介绍几款实用的编辑软件&#xff0c;让你轻松应对各种PDF编…

Spring:IoC容器(基于注解管理bean)

1. HelloWorld * 引入依赖* 开启组件扫描* 使用注解定义 Bean* 依赖注入 2.开启组件扫描 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/20…

免费开源人脸识别系统,支持RESTful API

简介 CompreFace 是一个免费开源的人脸识别项目&#xff0c;您不需要具备机器学习技能就能安装设置和使用 CompreFace&#xff0c;官方提供了基于 docker 的部署方法&#xff0c;可以方便地部署在本地或者云端服务器上。 CompreFace 提供了 RESTful API&#xff0c;用于人脸识别…

大模型效能工具之智能CommitMessage

01 背景 随着大型语言模型的迅猛增长&#xff0c;各种模型在各个领域的应用如雨后春笋般迅速涌现。在研发全流程的效能方面&#xff0c;也出现了一系列贯穿全流程的提效和质量工具&#xff0c;比如针对成本较高的Oncall&#xff0c;首先出现了高质量的RAG助手&#xff1b;在开…

云原生Kubernetes: K8S 1.26版本 部署KubeSphere

目录 一、实验 1.环境 2.K8S 1.26版本部署HELM 3.K8S 1.26版本 部署KubeSphere 4.安装KubeSphere DevOps 二、问题 1.如何安装Zadig 2.扩展插件Zadig安装失败 3.calico 如何实现不同node通信 4.如何清除docker占用的磁盘空间 5.如何强制删除资源 6.namespace删除不…

linux命令中arj使用

arj 用于创建和管理.arj压缩包 补充说明 arj命令 是 .arj 格式的压缩文件的管理器&#xff0c;用于创建和管理 .arj 压缩包。 语法 arj(参数)参数 操作指令&#xff1a;对 .arj 压缩包执行的操作指令&#xff1b;压缩包名称&#xff1a;指定要操作的arj压缩包名称。 更多…

非关系型数据库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)是对不同于…

2024.05.23 学习记录

1、 react hooks 面经复习 2、xiaolin coding 计算机网络 复习 3、组件库 subMenu、test测试、tabs组件初步开发完成 4、代码随想录刷题&#xff1a;动态规划 01背包 all

sharded jedis pipelined 执行后 数据并未存入redis

前言 因为历史原因&#xff0c;在某个同步菜单操作的方法中先清除缓存&#xff0c;然后在初始化缓存。本来很正常的逻辑&#xff0c;但是这个清除是db查询获取所有的菜单 然后循环一条条删除 然后在db查询有效的菜单操作 在循环一条条插进去 经统计这个菜单操作大概有个7千个 …

实战Java虚拟机-高级篇

一、GraalVM 什么是GraalVM GraalVM是Oracle官方推出的一款高性能JDK&#xff0c;使用它享受比OpenJDK或者OracleJDK更好的性能。GraalVM的官方网址&#xff1a;https://www.graalvm.org/官方标语&#xff1a;Build faster, smaller, leaner applications。 更低的CPU、内存…