【Python · Pytorch】配置cuda环境 cuDNN库

news2024/9/22 3:36:08

【Python · Pytorch】配置cuda环境 & cuDNN库

  • 1. 查找对应版本
    • 1.1 查看Pytorch GPU目前支持版本
    • 1.1 查看Nvidia驱动版本
    • 1.2 查看支持cuda版本
    • 1.3 查看支持cuDNN版本
      • 1.3.1 cuDNN 9.0.0及以上版本
      • 1.3.2 cuDNN 9.0.0以下版本
    • 1.4 安装版本确定
  • 2. 安装cuda环境
    • 2.1 cuda简介
      • 2.1.1 CPU+GPU异构计算
      • 2.1.2 NVIDIA 开发工具链
      • 2.1.3 常见CUDA库
    • 2.2 cuda安装流程
    • 2.3 cuda安装检验
    • 2.4 配置环境变量
  • 3. 安装cuDNN库
    • 3.1 cuDNN简介
    • 3.2 cuDNN安装流程
    • 3.3 配置环境变量
  • 4. 安装Pytorch GPU版本
  • 『附录』whl文件简介

本文介绍如何配置cuda环境、cuDNN库,并安装GPU版本的Pytorch。
本文为博主自用知识点提纲,或存谬误,详细内容可参考其他文章。

1. 查找对应版本

1.1 查看Pytorch GPU目前支持版本

Pytorch官网

Pytorch官网

1.1 查看Nvidia驱动版本

点击电脑任务栏右侧,点击NVIDIA设置

NVIDIA设置
查看 NVIDIA驱动版本

下载Nvidia最新驱动

官网驱动下载

进入官网,选择NVIDIA设备版本。

选择NVIDIA设备版本

页面跳转后,下载对应驱动即可。

下载NVIDIA驱动

1.2 查看支持cuda版本

查看支持cuda步骤:

  1. 点击“NVIDIA设置”,进入“NVIDIA控制面板”
  2. 点击“系统信息”,查看系统信息
  3. 点击“组件”,查看“NVCUDA64.DLL”对应的产品名称“NVIDIA CUDA 12.6.65 driver”

至此,找到所支持的cuda版本,该设备支持cuda 12.6.65及以下版本。

查看支持cuda版本

进入官网,寻找对应版本,此处下载12.4.012.4.1,以12.4.0为例。

CUDA Toolkit Archive 官网

CUDA Toolkit Archive 官网

选择需要的版本,点击下载进入选择界面。

选择版本

按照所装系统选择,下载文件即可。

1.3 查看支持cuDNN版本

1.3.1 cuDNN 9.0.0及以上版本

首先,进入NVIDIA官方cuDNN文档。

官网文档

官方cuDNN文档

点击“Support Matrix”,查看最新支持矩阵。

Support Matrix

下图为cuDNN9.3.0最新支持矩阵,该设备支持CUDA 12.x,驱动版本560.94,满足安装cuDNN9.3.0的条件。s
Support Matrix

进入下载列表,下载对应版本的cuDNN。

下载列表

下载列表

选择需要的版本,点击下载进入选择界面。

下载选择界面

按照所装系统选择,下载文件即可。


最新版本9.4.0 安装链接

1.3.2 cuDNN 9.0.0以下版本

部分较早GPU驱动不支持9.0.0及以上版本cuda,这里提供cuDNN 9.0.0以下版本链接。

安装cuDNN 9.0.0以下版本与上述流程类似,下面为官网链接,仅供参考。

官网文档 官网文档

官方文档

官方文档

1.4 安装版本确定

该设备支持12.6.65及以下cuda版本,最新的Pytorch支持12.4.0cuda版本,故而安装12.4.0版本cuda及9.3.0版本cuDNN。

版本号
pytorch2.4.1+cu124
cuda12.4.0
cuDNN9.3.0

2. 安装cuda环境

2.1 cuda简介

cuda简介
cuda简介

CUDA是英伟达公司设计研发一种并行计算平台和编程模型,包含了CUDA指令集架构以及GPU内部的并行计算引擎。开发人员可以使用C语言来为CUDA架构编写程序,所编写出的程序可以在支持CUDA的处理器上以超高性能运行。

CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员可以使用C语言来为CUDA™架构编写程序,所编写出的程序可以在支持CUDA™的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。


深度学习框架的加速器:CUDA不仅在构建英伟达自身的软件生态中扮演关键角色,在推动深度学习生态发展方面也功不可没。
CUDA

2.1.1 CPU+GPU异构计算

CPU:中央处理器(Central Processing Unit),计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。

运算核心较少,但是其可以实现复杂的逻辑运算,因此其适合控制密集型任务,CPU更擅长数据缓存和流程控制——(少量的复杂计算)

GPU:图形处理器(Graphics Processing Unit),最早主要进行图形处理。

如今深度学习大火,GPU高效的并行计算能力充分被AI应用发掘。

GPU拥有更多的运算核心,其特别适合数据并行的计算密集型任务,如大型矩阵运算——(大量的简单运算)
CPU&GPU

一个典型的 CPU 拥有少数几个快速的计算核心,而一个典型的 GPU 拥有几百到几千个不那么快速的计算核心。

CPU的晶体管设计更多地侧重于数据缓存和复杂的流程控制,而GPU则将大量晶体管投入到算术逻辑单元中,以实现并行处理能力。

因此,GPU正是通过其众多的计算核心集群来实现其相对较高的计算性能。

使用CUDA编程,开发者可以精确地指定数据如何被分配到GPU的各个核心上,并控制这些核心如何协同工作来解决问题。
CPU&GPU

GPU不能单独进行工作,GPU相当于CPU的协处理器,由CPU进行调度,CPU+GPU组成异构计算架构。

在由 CPU 和 GPU 构成的异构计算平台中,通常将起控制作用的CPU 称为主机(host),将起加速作用的GPU 称为设备(device)。

主机和设备之间内存访问一般通过PCle总线链接。

2.1.2 NVIDIA 开发工具链

① NVIDIA Driver

  • 显卡驱动是连接操作系统和显卡硬件之间的桥梁,确保显卡能够正常工作并发挥最佳性能。

  • 显卡驱动包含硬件设备的信息,使得操作系统能够识别并与显卡硬件进行通信。

  • 显卡驱动对于启用显卡的全部功能、性能优化、游戏和应用程序兼容性以及修复问题和安全更新都至关重要。

② CUDA Toolkit

  • CUDA Toolkit是一个由NVIDIA开发的软件开发工具包,它为NVIDIA GPU提供了一组API和工具,使得开发人员可以利用GPU的并行计算能力来加速计算密集型应用程序。

  • CUDA Toolkit包括CUDA编译器(NVCC)、CUDA运行时库、CUDA驱动程序等组件,它们协同工作,使得开发人员可以使用C或C++编写GPU加速的代码。

③ CUDA API

  • CUDA API是CUDA编程的接口集合,它允许开发者使用CUDA进行高性能计算。

  • CUDA API包括CUDA Runtime API和CUDA Driver API,它们提供了用于管理设备、内存、执行等功能的函数。

  • 开发者可以通过CUDA API来编写CUDA程序,以利用GPU的并行计算能力。

④ NVCC

  • NVCC是CUDA的编译器,属于CUDA Toolkit的一部分,位于运行时层。

  • NVCC是一种编译器驱动程序,用于简化编译C++或PTX代码。它提供简单且熟悉的命令行选项,并通过调用实现不同编译阶段的工具集合来执行它们。

  • 开发者在编写CUDA程序时,需要使用NVCC来编译包含CUDA核心语言扩展的源文件。

NVIDIA Driver是确保显卡正常工作的基础,而CUDA Toolkit则是利用GPU进行高性能计算的软件开发工具包。

CUDA API是CUDA编程的接口,而NVCC则是CUDA的编译器,用于将CUDA程序编译成可在GPU上执行的代码。
CUDA API

2.1.3 常见CUDA库

  • cuBLAS:用于线性代数运算的库,如矩阵乘法、前缀求和等,常用于科学和工程计算。
  • cuDNN:NVIDIA CUDA深度神经网络库(cuDNN)是一个用于深度学习的GPU加速库,提供了一系列深度学习算法的高效实现。
  • cuSPARSE:针对稀疏矩阵的线性代数库。
  • cuFFT:快速傅里叶变换库,用于执行高效的FFT(快速傅里叶变换)操作。
  • cuRAND:随机数生成库,允许开发者在GPU上生成随机数。

这些库为开发者提供了丰富的计算资源,使他们能够更高效地开发GPU加速的应用程序。

2.2 cuda安装流程

下载对应版本的cuda安装包后,双击安装。

cuda安装包

点击“OK”,这里保持默认路径 (临时抽取文件路径)。

1

等待cuda安装程序提取文件。

2

提取完成后,出现以下界面,cuda安装包开始检查系统兼容性。

3

4

点击“同意并继续”。

4

选择“自定义(高级)”,点击“下一步”。

5

取消勾选Visual Studio Integration选项,点击“下一步”。

5

保持默认安装位置,点击“下一步”。

6

开始安装cuda程序。

7

安装完成,依次点击“下一步”、“关闭”。

8

9

2.3 cuda安装检验

电脑“所有应用”中出现NVIDIA Corporation即为安装成功。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

打开命令行,输入以下命令,查看cuda版本。

nvcc -V

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.4 配置环境变量

打开“系统属性”,配置环境变量。

系统属性-环境变量

将下列路径加入环境变量,电脑及cuda版本不同,则路径不同。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4\libnvvp

添加完成后,点击“确定”保存,重启电脑即可生效。

环境变量

3. 安装cuDNN库

3.1 cuDNN简介

cuDNN

NVIDIA CUDA® 深度神经网络库 (cuDNN) 是一个 GPU 加速的深度神经网络基元库,能够以高度优化的方式实现标准例程(如:前向/反向卷积、池化层、归一化和激活层)。

全球的深度学习研究人员和框架开发者都依赖 cuDNN 来实现高性能 GPU 加速。借助 cuDNN,研究人员和开发者可以专注于训练神经网络及开发软件应用,而不必花时间进行低层级的 GPU 性能调整。

cuDNN 可加速广泛应用的深度学习框架,包括 Caffe2、Chainer、Keras、MATLAB、MxNet、PaddlePaddle、PyTorch 和 TensorFlow。如需获取经 NVIDIA 优化且已在框架中集成 cuDNN 的深度学习框架容器,请访问 NVIDIA GPU CLOUD 了解详情并开始使用。

3.2 cuDNN安装流程

下载对应版本的cuDNN安装包后,双击安装。

cuDNN安装包

cuDNN与cuda安装类似,故简化流程截图。

1

2

3

4

5

3.3 配置环境变量

打开“系统属性”,配置环境变量。

系统属性-环境变量

将下列路径加入环境变量,电脑及cuDNN版本不同,则路径不同。

C:\Program Files\NVIDIA\CUDNN\v9.3\bin

添加完成后,点击“确定”保存,重启电脑即可生效。

环境变量

4. 安装Pytorch GPU版本

完成cudacuDNN环境的安装后,开始安装GPU版本Pytorch。

首先,卸载已安装的CPU版本Pytorch。

# 查看已安装的PyTorch包(Windows)
pip list | findstr torch
## 补充:查看已安装的PyTorch包(Linux)
pip list | grep torch

# 卸载torch包
pip uninstall torch

执行以上命令后,会提示是否卸载该包,输入y进行确认即可。

再次进入官网,查找安装命令,一般有两种安装方式,即pipconda,这里以pip为例。

Pytorch官网

打开电脑命令行,输入安装命令,pip会自动根据设备Python版本选择对应的库。

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

若安装成功则可跳过后续步骤,若安装失败则将Downloading对应链接拷贝至浏览器网址栏。

命令行

浏览器根据链接下载,等待下载完成。

浏览器下载

如果下载仍然失败,可多次暂停后继续,也可尝试以下方法。

进入命令行,输入Python查看当前Python版本。

whl文件列表

退出命令行,点击下面链接,进入全版本下载列表。

全部列表 旧版本列表

通过浏览器自带搜索找到需要查找的Python库文件,点击下载,Pytorch库文件命名格式如图所示。

命名格式:torch-[torch版本]+cu[cuda版本]-cp[python版本]-cp[python版本]-[平台][架构].whl

whl文件

文件下载完成,打开命令行,执行命令安装GPU版本的torch。

安装whl文件
至此,GPU版本的torch安装完毕。

## 执行安装命令
# 1. cd至文件路径下执行命令
pip install torch-2.4.1+cu124-cp39-cp39-win_amd64.whl
# 2. 带路径执行命令
pip install ./torch-2.4.1+cu124-cp39-cp39-win_amd64.whl

编写Python脚本,确认安装PyTorch的版本。

# 导入torch库
import torch

# 打印PyTorch的版本号
print(torch.__version__)

# 打印CUDA是否可用
print(torch.cuda.is_available())

在这里插入图片描述


『附录』whl文件简介

在Python中,whl文件是一种 预编译二进制包,全称wheel文件,它是Python分发包的标准格式之一。

whl文件的出现,使Python包能够跨平台兼容安装,更加高效。

Python源码包格式为tar.gzzip格式,预编译二进制为whl格式。

whl文件特点

  • 快速安装:whl文件是预编译的二进制包,比从源代码安装更快。
  • 跨平台兼容:whl文件针对不同操作系统和Python版本进行编译,实现跨平台兼容性。
  • 减少依赖问题:whl文件可确保所需依赖项包含在内,无需手动安装依赖项。

whl文件安装方法

pip install xxx.whl

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

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

相关文章

时装爱好者的网页购物天堂:Spring Boot技术探索

第2章相关技术 2.1 B/S架构 B/S结构的特点也非常多,例如在很多浏览器中都可以做出信号请求。并且可以适当的减轻用户的工作量,通过对客户端安装或者是配置少量的运行软件就能够逐步减少用户的工作量,这些功能的操作主要是由服务器来进行控制的…

基于yolov8的西红柿检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的西红柿检测系统是一种利用深度学习技术的创新应用,旨在通过自动化和智能化手段提高西红柿成熟度检测的准确性和效率。该系统采用YOLOv8算法,该算法是深度学习领域中的先进目标检测模型,具备实时检测和多目标识别的…

基于vue框架的车辆理赔系统5vzcd(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,员工,保险信息,保单信息,申请理赔,事故调查,赔偿金发放 开题报告内容 基于Vue框架的车辆理赔系统开题报告 一、项目背景与意义 随着汽车保有量的持续增长,车辆事故频发,车辆保险理赔成为保险公司和车主共…

机器学习和物联网驱动技术在加工过程中监测工具磨损:一项全面的综述

这篇论文的标题是《Machine-Learning and Internet-of-Things-Driven Techniques for Monitoring Tool Wear in Machining Process: A Comprehensive Review》,由 Sudhan Kasiviswanathan、Sakthivel Gnanasekaran、Mohanraj Thangamuthu 和 Jegadeeshwaran Rakkiya…

最好用的Python IDE,PyCharm保姆级安装教程

简介 由于Python语法简单容易入门,并且Python在办公自动化等领域的功能非常强大,所以现在越来越多非IT行业的人也开始学起了Python,要学习和使用一门编程语言,一个好用的IDE是必不可少的,而对于Python来说&#xff0c…

SpringMVC基于注解使用

01-拦截器介绍 首先在pom.xml里面加入springmvc的依赖 创建拦截类 在spring-mvc.xml配置拦截器配置 创建控制类测试 拦截器中处理方法之前的方法介绍 拦截器中处理方法之后,渲染之前的方法介绍 拦截器中处理方法之后,渲染之后的方法介绍 判断拦截器和过…

SAM2(Segment Anything Model 2)新一代分割一切大模型实战总结

Segment Anything Model 2(SAM 2)作为Meta公司发布的Segment Anything Model(SAM)的升级版本,在图像和视频分割领域展现出了显著的优点和特性。 论文连接:https://arxiv.org/pdf/2408.00714 Demo: https…

9月6号作业

1&#xff1a;.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QWidget> #include<QIcon> //图标类 #include<QLabel> //标签类 #include<QMovie> //动图类 #include<QLineEdit> //行编辑器类 …

黑马点评8——好友关注-SortedSet

文章目录 关注和取关共同关注Feed流实现方案分析推送到粉丝收件箱Feed流基于推模式实现关注推送功能 滚动分页查询收件箱的思路实现滚动分页查询 关注和取关 所以关注和取关就是简单的插入和删除数据库。 Overridepublic Result isFollow(Long followUserId) {// 1. 获取登录用…

J.U.C Review - Stream并行计算原理源码分析

文章目录 Java 8 Stream简介Stream单线程串行计算Stream多线程并行计算源码分析Stream并行计算原理Stream并行计算的性能提升 Java 8 Stream简介 自Java 8推出以来&#xff0c;开发者可以使用Stream接口和lambda表达式实现流式计算。这种编程风格不仅简化了对集合操作的代码&a…

无线信道中ph和ph^2的场景

使用 p h ph ph的情况&#xff1a; Rayleigh 分布的随机变量可以通过两个独立且相同分布的零均值、高斯分布的随机变量表示。设两个高斯随机变量为 X ∼ N ( 0 , σ 2 ) X \sim \mathcal{N}(0, \sigma^2) X∼N(0,σ2)和 Y ∼ N ( 0 , σ 2 ) Y \sim \mathcal{N}(0, \sigma^2)…

枚举: C++和Python实现鸡兔同笼问题

作者制作不易&#xff0c;关注、点赞、收藏一下吧&#xff01; 目录 1.Python实现 2.C实现 1.Python实现 首先&#xff0c;我们需要输入头和脚的数量: head int(input("请输入头的数量: ")) feet int(input("请输入脚的数量: ")) input() 实现输入…

优质的产业园都在怎么做运营?

产业园区作为区域经济发展的重要载体&#xff0c;其运营模式和管理水平直接影响着产业集聚的成效和区域经济的竞争力。在一线城市与新一线城市中&#xff0c;已经涌现出了一批以高效运营、创新服务为特色的优质产业园&#xff0c;今天&#xff0c;我们就城市标杆产业园的案例和…

10款古方突破1800亿元,康缘药业发力,市场迎井喷式增长……

在政策东风与市场需求的双重驱动下&#xff0c;中药创新领域正迎来前所未有的发展机遇。特别是古代经典名方制剂的研发与注册&#xff0c;正以前所未有的速度推进&#xff0c;不仅激发了行业的活力&#xff0c;也为患者带来了更多治疗选择。本文将深入探讨这一领域的最新动态&a…

828华为云征文|Flexus云服务器X实例快速部署在线测评平台,适用各种信息学教学

文章目录 如何选配Flexus云服务器X实例服务器HydroOJHOJ 服务器资源的选取基础配置实例规格镜像、存储、网络弹性公网IP云服务器名称 部署HydroOJ1.设置安全组、开放端口2.部署HydroOJ回到控制中心&#xff0c;远程登录 部署HOJ安装docker# 安装docker-compose部署HOJ 本篇幅为…

Vatee万腾平台:赋能企业,共筑智慧经济新高地

在智慧经济时代的大潮中&#xff0c;企业如何把握机遇&#xff0c;实现转型升级&#xff0c;成为行业内的佼佼者&#xff1f;Vatee万腾平台以其卓越的技术实力、前瞻性的战略眼光和全方位的服务体系&#xff0c;正逐步成为企业数字化转型的坚实后盾&#xff0c;赋能企业&#x…

Day-06-QFileDialog文件操作

一、实现打开文件选择对话框 1、程序演示 2、相关代码 void Widget::on_QFileDialog_clicked() {QString fileName QFileDialog::getOpenFileName(this, tr("Open File"),"D:/QT project/", /*注意修改自己的文件打开地址*/tr("Text (*.txt *.d…

又一个新的开源AI项目!!【送源码】

好家伙&#xff0c;国内大模型发展太猛了&#xff01; 旗舰端侧模型面壁「小刚炮」系列进化为全新 MiniCPM 3.0 基座模型&#xff0c;再次以小博大&#xff0c;以 4B 参数&#xff0c;带来超越 GPT-3.5 的性能&#xff0c;强得不像端侧模型。 并且&#xff0c;量化后仅 2GB 内…

【Hadoop|HDFS篇】HDFS的读写流程

1. HDFS的写流程 1.1 剖析文件的写入 副本存储节点的选择问题&#xff1a; 第一个副本在Client所在的节点上&#xff0c;如果客户端在集群外&#xff0c;随机选一个。第二个副本在另一个机架的随机一个节点上。第三个副本在第二个副本所在的机架的随机节点上。 2. HDFS的写流…

Redis 集群:如何实现数据的高效分片与负载均衡

Redis 集群&#xff1a;如何实现数据的高效分片与负载均衡 一 . 基本概念二 . 数据分片算法2.1 哈希求余算法2.2 一致性哈希算法2.3 哈希槽分区算法核心思路Redis 集群中最多只能有 16384 个分片吗 ?为什么一定要是 16384 个槽位 ? 三 . 基于 docker 进行集群的搭建3.1 创建目…