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

【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.mzph.cn/bicheng/53415.shtml

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

相关文章

Leetcode Hot 100刷题记录 -Day10(合并区间)

合并区间 问题描述: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti,endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入&…

【计算机网络】浏览器输入访问某网址时,后台流程是什么

在访问网址时,后台的具体流程可以因不同的网站、服务器和应用架构而异。 实际过程中可能还涉及更多的细节和步骤,如缓存处理、重定向、负载均衡等。 此外,不同的网站和应用架构可能会有不同的实现方式和优化策略。 部分特定网站或应用&#x…

【C++】stack、queue、priority_queue的模拟实现

目录 一、stack 🌟stack的简单介绍 🌟stack的基本使用 🌟stack的模拟实现 🌟stack模拟实现的完整代码 🌟容器适配器 二、queue 🌟queue的简单介绍 🌟queue的基本使用 🌟q…

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

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

Git 使用指南 --- 版本管理

序言 Git 是一个开源的 分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。对一个程序员来说,掌握 Git 的使用是必要的。  在这个系列中,将详细的介绍 Git 的使用和原理,话不多说,让我们开始吧。…

【C++ 面试 - STL】每日 3 题(四)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…

qiankun微前端

qiankun微前端踩坑指南: 上图原因子项目未启动 上图使用$tqiankun微前端中未引用i18n插件解决方案如下: 子项目main.js中加上i18n: 一些坑忘记截图复现会继续更新....... 配置正文开始------> 主项目 子项目 1.名字需要与子项目跳转后缀一致 2.v…

景联文科技:提供高质量多模态数据标注,推动智能化转型

随着人工智能技术的快速发展,多模态数据标注成为推动智能系统更深层次理解和应用的关键技术之一。 作为行业领先的多模态数据标注服务商,景联文科技凭借其在技术、流程和人才方面的综合优势,推出了全面的多模态标注解决方案,助力…

Python | Leetcode Python题解之第392题判断子序列

题目: 题解: class Solution:def isSubsequence(self, s: str, t: str) -> bool:n, m len(s), len(t)f [[0] * 26 for _ in range(m)]f.append([m] * 26)for i in range(m - 1, -1, -1):for j in range(26):f[i][j] i if ord(t[i]) j ord(a) el…

【5G PHY】5G循环前缀(CP)设计思路简述

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。 博客内容主要围绕…

将语义分割的标签转换为实例分割(yolo)的标签

语义分割的标签(目标处为255,其余处为0) 实例分割的标签(yolo.txt),描述边界的多边形顶点的归一化位置 绘制在原图类似蓝色的边框所示。 废话不多说,直接贴代码; import os import cv2 imp…

监控平台总结之面试常问答案

思路 延伸的面试题总结及答案: 1.说说前端监控平台/监控SDK架构设计和难点亮点? 架构设计 数据采集层: SDK: 在前端集成的 SDK 负责采集数据,包括性能指标、用户行为、错误日志等。 数据收集: 实现高效的数据采集机制,支持实时…

分类任务实现模型集成代码模版

分类任务实现模型(投票式)集成代码模版 简介 本实验使用上一博客的深度学习分类模型训练代码模板-CSDN博客,自定义投票式集成,手动实现模型集成(投票法)的代码。最后通过tensorboard进行可视化&#xff0…

傅里叶变换家族

禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》 禹晶、肖创柏、廖庆敏《数字图像处理》资源二维码

java设计模式(行为型模式:状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式)

6,行为型模式 6.5 状态模式 6.5.1 概述 【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果…

太细了有手就行,SpringCloud Alibaba+Nacos+Dubbo整合

SpringCloud AlibabaNacosDubbo,文末有完整项目代码链接 前言一、这几者之间关系二、准备工作1.Nacos2.SpringCloud Alibaba4.SpringCloud5.Dubbo项目中层级关系 三、代码调用逻辑1.dubbo-api模块2.account-api模块3.api-service模块4.逻辑梳理 四、Maven和配置1.pa…

尽快更新!Zyxel 路由器曝出 OS 命令注入漏洞,影响多个版本

近日,Zyxel 发布安全更新,以解决影响其多款商用路由器的关键漏洞,该漏洞可能允许未经认证的攻击者执行操作系统命令注入。 该漏洞被追踪为 CVE-2024-7261,CVSS v3 得分为 9.8,是一个输入验证故障,由用户提…

了解PD快充协议和QC快充协议

PD快充协议的实现依赖充电器与设备之间的通信协议,这种通信协议确保了充电器能够提供设备所需要的特定电压和电流。在快充技术中快充协议起到关键角色。 现在市面上最常见的快充协议有PD、QC、华为FCP/SCP、三星AFC协议 、VOOC闪充。PD和QC 协议属于公用协议 。华…

CSS 高级区块效果——WEB开发系列25

CSS提供了多种工具和属性,使我们能够创建视觉上引人注目的效果。今天我们继续将深入了解几种高级CSS效果:盒子阴影、滤镜、混合模式和文本背景裁剪,提升网页设计的质感和深度。 一、盒子阴影(Box Shadow) 对于盒子元素…

学会这2招,让你轻松提取长视频中的文案!

在当今数字化时代,短视频已成为备受欢迎的内容形式,众多品牌和营销人员借助短视频推广宣传产品。 短视频文案作为短视频内容的关键部分,能够在极短时间内向受众传达品牌信息和产品特点。 不过,短视频文案的提取和创作确实极具挑…