Ubuntu22.04 LTS + CUDA12.3 + CUDNN8.9.7 + PyTorch2.1.1

简介

本文记录Ubuntu22.04长期支持版系统下的CUDA驱动和cuDNN神经网络加速库的安装,并安装PyTorch2.1.1来测试是否安装成功。

安装Ubuntu系统

  1. 如果是旧的不支持UEFI启动的主板,请参考本人博客U盘系统盘制作与系统安装(详细图解)
  2. 如果是新的支持UEFI启动的主板,请参考本人博客UEFI下Windows10和Ubuntu22.04双系统安装图解

安装CUDA

CUDA的安装方式有多种:deb在线、deb离线、run在线、run离线等等,具体可参见CUDA手册。本文采用deb离线方式,访问CUDA下载首页,根据操作系统、处理器等信息选择安装文件。
在这里插入图片描述
选择完成后页面给出安装命令脚本,可以看到上述deb文件仅仅安装了CUDA运行时环境(base installer),还需要安装对应的NVIDIA显示驱动(Driver installer)。
在这里插入图片描述
本文下载的文件为 cuda-repo-ubuntu2204-12-3-local_12.3.1-545.23.08-1_amd64.deb ,根据提示下载后执行如下命令安装Base Installer

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
sudo dpkg -i cuda-repo-ubuntu2204-12-3-local_12.3.1-545.23.08-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-3-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-3

安装完成后根据需要选择安装legacy 还是open核下的驱动

# To install the legacy kernel module flavor:
sudo apt-get install -y cuda-drivers# To install the open kernel module flavor:
sudo apt-get install -y nvidia-kernel-open-545
sudo apt-get install -y cuda-drivers-545

最后需要添加环境变量到~/.bashrc 文件:

export CUDA_HOME=/usr/local/cuda-12.3
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

安装CUDNN

从CUDNN首页下载安装包,有tar压缩包文件格式,也有deb格式,根据操作系统类型版本和CUDA版本选择相应的安装包,如本文选择下图中所示安装文件(tar压缩包格式)

在这里插入图片描述

下载完成后执行如下命令安装,具体参见官方安装指南:

tar -xvf cudnn-linux-$arch-8.x.x.x_cudaX.Y-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include 
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

注意修改上述命令中的文件名,并替换x.x.xX.Y为具体的版本号,如本文实际执行命令为:

tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include 
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

安装PyTorch

访问PyTorch首页,根据环境选择安装方式,输入提示命令安装即可,如下图所示

在这里插入图片描述
如果想使用离线安装方式,可以先从这里下载所需要的PyTorch安装文件,如 torch-2.1.1%2Bcu121-cp311-cp311-linux_x86_64.whl 表示适合于CUDA12.1,Python3.11、Linux系统、x86_64处理器架构环境下的安装文件。下载完成后,执行pip install torch-xxx.whl即可。

下面利用PyTorch来获取硬件及安装的PyTorch版本信息,代码如下:

import torch as thprint("Torch Version: ", th.__version__)
print("CUDA Version: ", th.version.cuda)
print("CUDNN Version: ", th.backends.cudnn.version())
print("CUDA available?: ", th.cuda.is_available())
print("CUDA device count: ", th.cuda.device_count())for gpuid in range(th.cuda.device_count()):print("GPU ID: %d, name: %s, capability: %s" % (gpuid, th.cuda.get_device_name(gpuid), th.cuda.get_device_capability(gpuid)))print(th.cuda.get_device_properties(gpuid))

执行后输出如下类似信息:

Torch Version:  2.1.1+cu121
CUDA Version:  12.1
CUDNN Version:  8907
CUDA available?:  True
CUDA device count:  2
GPU ID: 0, name: NVIDIA GeForce GTX 1080 Ti, capability: (6, 1)
_CudaDeviceProperties(name='NVIDIA GeForce GTX 1080 Ti', major=6, minor=1, total_memory=11172MB, multi_processor_count=28)
GPU ID: 1, name: NVIDIA GeForce GTX 1080, capability: (6, 1)
_CudaDeviceProperties(name='NVIDIA GeForce GTX 1080', major=6, minor=1, total_memory=8110MB, multi_processor_count=20)

附录

多版本CUDA切换

可以参考本人博客计算机使用技巧。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac苹果电脑清除数据软件CleanMyMac X4.16

在数字时代,保护个人隐私变得越来越重要。当我们出售个人使用的电脑,亦或者离职后需要上交电脑,都需要对存留在电脑的个人信息做彻底的清除。随着越来越多的人选择使用苹果电脑,很多人想要了解苹果电脑清除数据要怎样做才是最彻底…

深入理解Sentinel系列-1.初识Sentinel

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理、分布式技术原理🔥如果感觉博主的文章还不错的话&#xff…

低多边形游戏风格3D模型纹理贴图

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

《安富莱嵌入式周报》第328期:自主微型机器人,火星探测器发射前失误故障分析,微软推出12周24期免费AI课程,炫酷3D LED点阵设计,MDK5.39发布

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程: 【实战技能】 单步运行源码分析,一期视频整明白FreeRTOS内核源码框架和运行…

模电·放大电路的分析方法——图解法

放大电路的分析方法——图解法 静态工作点的分析电压放大倍数的分析波形非线性失真的分析直流负载线与交流负载线图解法的适用范围 在实际测出放大管的输入特性、输出特性和已知放大电路中其它各元件参数的情况下,利用作图的方法对放大电路进行分析即为图解法。 静…

BUU SQL COURSE 1

四 发现有登录框,爆破半天也爆破不出来,只能从别的地方下手了 F12一下 发现了一个传参 进去发现id可以传参,sql注入一下试试 前三个都有回显,当id4的时候页面没有回显了,正好验证 了页面 有三个新闻 当order by 3的时…

CSPNet: A New Backbone that can Enhance Learning Capability of CNN(2019)

文章目录 -Abstract1 Introduction2 Related workformer work 3 Method3.1 Cross Stage Partial Network3.2 Exact Fusion Model 4 Experiments5 Conclusion 原文链接 源代码 - 梯度信息重用(有别于冗余的梯度信息)可以减少计算量和内存占用提高效率&am…

内存学习——堆(heap)

目录 一、概念二、自定义malloc函数三、Debug运行四、heap_4简单分析4.1 heap管理链表结构体4.2 堆初始化4.3 malloc使用4.4 free使用 一、概念 内存分为堆和栈两部分: 栈(Stack)是一种后进先出(LIFO)的数据结构&…

Flutter自定义下拉选择框dropDownMenu

利用PopupMenuButton和PopupMenuItem写了个下拉选择框,之所以不采用系统的,是因为自定义的更能适配项目需求,话不多说,直接看效果 下面直接贴出代码、代码中注释写的都很清楚,使用起来应该很方便,如果有任何…

Navicat 技术指引 | 适用于 GaussDB 分布式的数据生成功能

Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…

得帆云助力容百科技构建CRM系统,实现LTC全流程管理

宁波容百新能源科技股份有限公司 宁波容百新能源科技股份有限公司(以下简称“容百科技”)于2014年9月建立,是高科技新能源材料行业的跨国型集团公司。专业从事锂电池正极材料的研发、生产和销售,于2019年登陆上交所科创板&#x…

Docker 部署 2FAuth 服务

拉取最新版本的 2FAuth 镜像: $ sudo docker pull 2fauth/2fauth:latest在本地预先创建好 2fauth 目录, 用于映射 2FAuth 容器内的 /2fauth 目录。 使用以下命令, 在 前台 运行 2FAuth 容器: $ sudo docker run -it --rm --name 2fauth -p 10085:8000/tcp -v /ho…

阻抗控制下机器人接触刚性环境振荡不稳定进行阻抗调节

在阻抗控制下,当机器人接触刚性环境时,可能会出现振荡不稳定的情况。这可以通过调整机器人的阻抗参数来进行调节。 阻抗接触 阻抗参数中的质量、阻尼和刚度都会对机器人控制系统的性能和稳定性产生重要影响。质量主要影响系统的惯性,从而影响…

打破常规思维:Scrapy处理豆瓣视频下载的方式

概述 Scrapy是一个强大的Python爬虫框架,它可以帮助我们快速地开发和部署各种类型的爬虫项目。Scrapy提供了许多方便的功能,例如请求调度、数据提取、数据存储、中间件、管道、信号等,让我们可以专注于业务逻辑,而不用担心底层的…

如何用Qt配置git项目并上传Gitee

1.进入到Qt项目文件夹内,打开 “Git Bash Here” 2.初始化,在“Git Bash Here”中输入 git init 3.加入所有文件,在“Git Bash Here”中输入 git add . (需要注意,git add 后面还有一个点) 4.添加备注,git com…

Hive数据库系列--Hive数据类型/Hive字段类型/Hive类型转换

文章目录 一、Hive数据类型1.1、数值类型1.2、字符类型1.3、日期时间类型1.4、其他类型1.5、集合数据类型1.5.1、Struct举例1.5.2、Array举例1.5.3、Map举例 二、数据类型转换2.1、隐式转换2.2、显示转换 三、字段类型的使用3.1、DECIMAL(precision,scale) 本章主要…

linux驱动开发——内核调试技术

目录 一、前言 二、内核调试方法 2.1 内核调试概述 2.2 学会分析内核源程序 2.3调试方法介绍 三、内核打印函数 3.1内核镜像解压前的串口输出函数 3.2 内核镜像解压后的串口输出函数 3.3 内核打印函数 四、获取内核信息 4.1系统请求键 4.2 通过/proc 接口 4.3 通过…

ES 如何将国际标准时间格式进行格式化与调整时区

需求,日志收集的时候,时间格式是国际标准时间格式。形如yyyy-MM-ddTHH:mm:ss.SSS。 (2023-12-05T02:45:50.282Z)这个时区也不对,那如何将此类型的时间,进行格式化呢? 本篇文章体统一个案例&…

STM32F103的启动过程及BootLoader作用

1.STM32的启动过程 1.1 复位后的启动模式选择 我们知道的复位方式有三种:上电复位,硬件复位和软件复位。当产生复位,并且离开复位状态后,CM3 内核做的第一件事就是读取下列两个32 位整数的值: (1&#xff0…

大数据技术6: 大数据技术栈

前言:大数据相关的技术名词特别多,这些技术栈之间的关系是什么,对初学者来说很难找到抓手。我一开始从后端转大数据的时候有点懵逼,整体接触了一遍之后才把大数据技术栈给弄明白了。 一、大数据技术栈 做大数据开发,无…