Ubuntu 22.04安装cuda及Pytorch教程

news2025/1/11 5:05:03

文章目录

  • 1、安装显卡驱动
  • 2、安装CUDA
  • 3、安装cuDNN
  • 4、安装pyTorch
  • 5、卸载CUDA
  • 参考资料

服务器重装系统后,需要重新安装显卡驱动、cuda及Pytorch等,有些步骤容易忘记,这里记录一下。这里我的服务器配置以及安装版本的情况如下:

  • 服务器系统:Ubuntu 22.04
  • 显卡型号:NVIDIA GeForce RTX 2080 Ti
  • 显卡驱动版本:nvidia-driver-535
  • cuda版本:CUDA Toolkit 12.2.0
  • pytorch版本:torch 2.3.1

在PyTorch中使用CUDA,需要确保安装的PyTorch版本与你的CUDA版本兼容, 且正确安装了匹配GPU的CUDA Toolkit。以下是在PyTorch中使用CUDA的一般步骤:

  1. 检查CUDA支持: 首先,确保你的GPU支持CUDA。你可以在官方CUDA支持列表上查找你的GPU型号。或者直接命令行 nvidia-smi 进行查看。

  2. 安装CUDA Toolkit: 下载并安装与你的GPU型号匹配的CUDA Toolkit。你可以从NVIDIA官网下载。在安装期间,可以选择安装适用于你的系统的CUDNN库。

  3. 安装cuDNN(可选): cuDNN是NVIDIA的深度神经网络库,可以加速深度学习任务。在CUDNN下载页面下载适用于你的CUDA版本的cuDNN,并按照安装说明进行安装。

  4. 安装PyTorch: 选择合适的PyTorch版本并使用pip或conda进行安装。

1、安装显卡驱动

在终端命令行输入 nvidia-smi 命令,若正常显示显卡的基础信息,则已成功安装nvidia驱动。

nvidia-smi

在这里插入图片描述

如果报错,则按照以下步骤安装nvidia驱动,具体步骤如下:

  1. 找到合适自己电脑显卡的驱动
ubuntu-drivers devices

会显示你的电脑上可用的nvidia驱动。只需要安装推荐的版本即可(后面有recommend字样)
在这里插入图片描述
这里,服务器显示 nvidia-driver-535 是推荐安装的版本。

  1. 找到对应版本的显卡驱动

我们直接安装 nvidia-driver-535 即可:

sudo apt-get install nvidia-driver-535

在这里插入图片描述
整个安装过程需要花费一小段时间,耐心等待即可。

  1. 重启电脑。
  2. 再次输入 nvidia-smi 命令,已经可以正常显示显卡的基本信息。

在这里插入图片描述

注意:右上角显示 CUDA Version:12.2,这也是这个版本的显卡驱动最高支持的cuda-toolkit版本。

2、安装CUDA

接下来打开nvidia CUDA Toolkit Archive的官方网址:https://developer.nvidia.com/cuda-toolkit-archive

选择想要安装的版本,这里我们安装CUDA Toolkit 12.2.0,如下图所示选择:
在这里插入图片描述

根据我们的操作系统及系统版本选择,这里我们选择了基于 deb(network) 的方式来安装:
在这里插入图片描述

根据页面上生成的安装指令进行操作即可:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda

查看目录是否存在:

cd /usr/local/cuda-12.2/bin

配置环境变量:安装成功后需要配置一下环境变量。这步很关键,如果不配置环境变量,则运行机器学习运算的时候会找不到GPU。

# 1.切换回home目录
cd ~  
# 2.修改.bashrc文件
vim .bashrc     
# 3.进入.bashrc文件后,拉到最下面,然后键盘按E键,进入编辑模式添加:
export PATH="/usr/local/cuda-12.2/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH"  
# 4.按ESC键退出编辑
:wq   # 退出保存
# 5. 应用生效
source .bashrc

查看安装的cuda版本:

nvcc -V

在这里插入图片描述

可以看到,已经成功安装了 cuda 12.2。

3、安装cuDNN

cuDNN(CUDA Deep Neural Network Library)是一个针对深度学习应用优化的加速库,它使用CUDA技术加速深度神经网络的训练和推断。这个库提供了一些高效的原语,例如卷积、池化、归一化等,可以帮助开发人员快速实现深度神经网络,并且提升训练和推断的速度。

CUDA和cuDNN是两个相互依赖的软件包,它们之间有以下关系:

  • CUDA是必需的:cuDNN需要依赖于CUDA才能够工作。因为cuDNN是使用CUDA技术实现的,所以只有支持CUDA的硬件和系统才能够运行它。在安装cuDNN之前,必须先安装CUDA,并且在环境变量中设置CUDA的路径。
  • cuDNN是可选的:尽管cuDNN可以提升深度学习应用的性能和效率,但它并不是必需的。如果不使用cuDNN,仍然可以使用CUDA进行深度学习计算。cuDNN只是一个可选的加速库,可以根据需要选择是否使用它。

cuDNN官网:https://developer.nvidia.com/rdp/cudnn-archive

首先在cuDNN官网找到跟此前安装的cuda版本兼容的版本,点击进入选择对应服务器系统类型的安装包即可。

4、安装pyTorch

pytorch官网:https://pytorch.org/get-started/locally/

先到pytorch官网找到在你的操作系统、包、CUDA版本、语言版本下对应的安装脚本。根据你的实际情况选择Pytorch安装包版本,然后复制页面自动生成的脚本进行安装。

在这里插入图片描述

这里,使用conda打开需要安装pyTorch的虚拟环境,这里我们的虚拟环境名称为pytorch。

执行安装命令:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

注意:新版本的pytorch已经自带python版本的cuda了,pytorch自带的cuda和前面装的cuda没有关系。

在这里插入图片描述

在 python 环境中检查是否安装完成:

import torch
torch.cuda.current_device()
torch.cuda.device_count()
torch.cuda.get_device_name(0)
torch.cuda.is_available()

输出如下:
在这里插入图片描述

5、卸载CUDA

参考官方文档:NVIDIA CUDA Installation Guide for Linux

参考资料

  • 在PyTorch中使用CUDA, pytorch与cuda不同版本对应安装指南,查看CUDA版本,安装对应版本pytorch

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

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

相关文章

E: Unable to locate package ros-kinetic-usb-cam

mkdir -p USB/src && cd USB/src catkin_init_workspace git clone https://github.com/bosch-ros-pkg/usb_cam.git cd .. catkin_make source devel/setup.bash echo "source ~/USB/devel/setup.bash" >> ~/.bashrc source ~/.bashrc 编译过程报错&…

undefined symbol: _ZN3c104impl8GPUTrace13gpu mmcv

这里写自定义目录标题 ImportError: //python3.8/site-packages/mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZN3c104impl8GPUTrace13gpuTraceStateEERROR conda.cli.main_run:execute(49): 这样的问题往往都是版本不匹配导致的 pytorch的版本,m…

Flink 基于 TDMQ Apache Pulsar 的离线场景使用实践

背景 Apache Flink 是一个开源的流处理和批处理框架,具有高吞吐量、低延迟的流式引擎,支持事件时间处理和状态管理,以及确保在机器故障时的容错性和一次性语义。Flink 的核心是一个分布式流数据处理引擎,支持 Java、Scala、Pytho…

软件管理及部分命令

sed命令 格式: sed [选项] 操作 目标文件 选项: -i:修改原始文件【如果不加-i,那就是仅仅修改内存中的文件副本】 案例:将1.txt中的tom修改成jerry。 sed -i "s/tom/jerry/g" 1.txt 将1…

数字驱动:企业发展的火箭助推器!

​ 在这个数字经济时代,数据就像火箭燃料,而数字驱动则是那强大的火箭助推器!它正以惊人的力量助力企业飞速发展! 数字驱动,助力企业发展的超强引擎! 用数据说话,决策不再盲目! 以数…

Java学习书籍推荐

本文推荐了Java基础,并发,虚拟机学习过程中,比较好的书籍,如果大家需要视频教程,可参考【软件开发】Java学习路线 或者B站文件夹同时会收藏其他Java视频,感谢关注。 指路:Java学习-创建者&…

RabbitMQ--Hello World(基础详解)

文章目录 先决条件RabbitMQ 初识RabbitMQ--Hello World发送接收 更多相关内容可查看 先决条件 本教程假定 RabbitMQ 已安装并在标准端口 (5672) 上运行。如果你 使用不同的主机、端口或凭据,连接设置将需要 调整。如未安装可查看Windows下载…

短视频矩阵系统----可视化剪辑独立开发(采用php)

短视频矩阵系统源头技术开发: 打磨短视频矩阵系统的开发规则核心框架可以按照以下几个步骤进行: 明确系统需求:首先明确系统的功能需求,包括短视频的上传、编辑、发布、播放等环节。确定系统的目标用户和主要的使用场景&#xff…

【数据结构】栈和队列-->理解和实现(赋源码)

Toc 欢迎光临我的Blog,喜欢就点歌关注吧♥ 前面介绍了顺序表、单链表、双向循环链表,基本上已经结束了链表的讲解,今天谈一下栈、队列。可以简单的说是前面学习的一特殊化实现,但是总体是相似的。 前言 栈是一种特殊的线性表&…

深入ES6:解锁 JavaScript 类与继承的高级玩法

个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! ES5、ES6介绍 文章目录 💯Class🍟1 类的由来🍟2 co…

手把手Linux高可hadoop集群的搭建

高可用集群的搭建 在搭建高可用集群之前,如果搭建了完全分布式hadoop,先执行stop-all.sh停掉所有的服务,只保留jdk和zookeeper的2个服务,然后再去搭建。 目标: 高可用集群简介部署Hadoop高可用集群 一.…

java:spring cloud使用tcc-transaction实现分布式事务

# 安装tcc-transaction server和dashboard 参考这篇文章【https://changmingxie.github.io/zh-cn/docs/ops/server/deploy-alone.html】里面有mysql的建表脚本,先将数据库建好。 下载tcc-transaction cd /chz/install/tcc-transaction wget https://github.com/ch…

webgl_framebuffer_texture

ThreeJS 官方案例学习&#xff08;webgl_framebuffer_texture&#xff09; 1.效果图 2.源码 <template><div><div id"container"></div><div id"selection"><div></div></div></div> </templa…

嵌入式Linux系统编程 — 2.3 标准I/O库:格式化I/O

目录 1 格式化I/O简介 2 格式化输出 2.1 格式化输出函数简介 2.2 格式控制字符串 format 2.3 示例程序 3 格式化输入 3.1 格式化输入简介 3.2 格式控制字符串 format 3.3 示例程序 1 格式化I/O简介 在先前示例代码中&#xff0c;经常使用库函数 printf() 来输出程序中…

操作系统教材第6版——个人笔记6

3.3.4 页面调度 页面调度 当主存空间已满而又需要装入新页时&#xff0c;页式虚拟存储管理必须按照一定的算法把已在主存的一些页调出去 #主存满加新&#xff0c;把已在主存一些页调出选择淘汰页的工作称为页面调度 选择淘汰页的算法称为页面调度算法 页面调度算法设计不当&a…

【递归、搜索与回溯】递归、搜索与回溯准备+递归主题

递归、搜索与回溯准备递归主题 1.递归2.搜索3.回溯与剪枝4.汉诺塔问题5.合并两个有序链表6.反转链表7.两两交换链表中的节点8.Pow(x, n)-快速幂&#xff08;medium&#xff09; 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你…

解决Windows Hosts 文件因为权限无法修改的问题

如何修改 Windows Hosts 文件并添加域名映射 在日常工作中&#xff0c;可能需要修改 Windows 的 hosts 文件&#xff0c;以将特定的域名映射到指定的 IP 地址。本文介绍三种方法来完成这一任务&#xff1a;直接手动编辑 hosts 文件&#xff0c;使用批处理文件自动完成任务&…

哈默纳科Harmonic谐波减速机应用领域有哪些

在制造设备中&#xff0c;精确控制速度与位置的需求日益凸显&#xff0c;这为谐波减速机的广泛应用提供了广阔的舞台。哈默纳科Harmonic谐波减速机以结构紧凑、高精度、高刚度、高可靠性、便于安装维护等优势&#xff0c;在工业机器人和自动化系统中发挥着举足轻重的作用。 一、…

如何调用地方天地图?

我们在《如何申请自己的专属天地图&#xff1f;》一文中&#xff0c;为大家分享了如果申请专属天地图&#xff0c;并在水经微图&#xff08;以下简称“微图”&#xff09;中加载的具体方法。 于是&#xff0c;就有朋友问如何调地方用天地图。 现在&#xff0c;我们就以四川地…

六位一线AI工程师总结大模型应用摸爬滚打一年的心得,网友:全程高能!

六位一线AI工程师和创业者&#xff0c;把在大模型应用开发上摸爬滚打一整年的心得&#xff0c;全&#xff01;分&#xff01;享&#xff01;了&#xff01; &#xff08;奇怪的六一儿童节大礼包出现了&#xff09; 这篇干货长文&#xff0c;一时间成为开发者社区热议的话题。…