【问题解决】| 关于torch无法使用GPU的一些实验探索,思考

news2024/11/15 9:15:30

文章目录

  • 1 研究背景
  • 2 问题解决
    • 2.1 问题一,这两个版本分别是怎么得到的?
    • 2.2 问题二,Windows下安装CUDA Tookit 是必须的吗?
    • 2.3 问题三,驱动版本必须大于等于运行时版本吗?
    • 2.4 问题四,只运行pip install torch可以吗?
  • 3 总结

1 研究背景

我们都知道,想要更快的运行深度学习代码,往往需要pytorch框架,pytorch框架会用到GPU相关的资源

这时候如果我们运行如下的代码

import torch
print(torch.cuda.is_available())

如果输出是True说明是可以用GPU的,如果是False则是不可以用的

那么现在有一个问题,为什么出现False不可以用的情况.

网上给出的答案往往是

Cuda的版本和torch不匹配

cuda是什么,cuda是一个计算设备架构,torch是基于cuda实现的

可是问题来了,查阅网上资料可以知道,cuda的版本有好几个,究竟是哪一个版本不匹配

第一个版本 网上叫做Driver Version驱动版本,在终端输入nvidia-smi 会输出一个cuda版本

在这里插入图片描述

第二个版本 网上叫做运行时版本,在终端输入 nvcc -V,会输出一个版本

在这里插入图片描述

我们通过实验证明这两个版本其实都不重要,重要的是安装torch指令时的内容

我们一点一点来说明

2 问题解决

2.1 问题一,这两个版本分别是怎么得到的?

对于驱动版本,是我们在安装显卡驱动后,会顺带生成的

而对于运行时版本,是我们在安装CUDA Tookit之后,会生成的

2.2 问题二,Windows下安装CUDA Tookit 是必须的吗?

我的第一个问题是,如果我们干脆不安装CUDA Tookit,也就是根本无法获得这个运行时API,torch可以用GPU跑深度学习代码吗?

实验证明是可以的

我们把CUDA Tookit删除,之后运行上面的测试代码,输出是True

说明不安装CUDA Tookit,torch可以用GPU跑深度学习代码

2.3 问题三,驱动版本必须大于等于运行时版本吗?

网上说驱动版本必须大于等于运行时版本

但我们做实验后,发现这个也不是必须的

我们测试了

运行时版本是12.3 驱动版本是12.1 的情况,依然可以正常使用API

2.4 问题四,只运行pip install torch可以吗?

只运行pip install torch是不可以的

会发现安装的torch是198MB左右的,大概率用不了GPU

我们发现官网的指令后面往往跟着一个cu118什么的,如下图所示

在这里插入图片描述

我们发现这个才是最后torch能运用GPU的关键

其实

我们测试结果是驱动版本在12.3的情况下 可以向下兼容12.1 和11.8 cuda pytorch安装命令

什么意思?

也就是说我允许了下面两条指令

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

会发现11.8版本的cuda和12.1版本的cuda都可以正常运行GPU

而且在安装的时候,往往安装大小在1GB左右

3 总结

实验证明

在pip指令后面的 cu118才是关键。

这次实验探索由我和学弟一起完成,感谢学弟@Fridemn!Fridemn-CSDN博客

做实验尝试做到很晚

但是我们目前只能说有一些感性的认识,总结了一些经验

但是对于CUDA的理解还是有很多不到位的地方,需要后面不断的实践补充

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

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

相关文章

力扣110 平衡二叉树 Java版本

文章目录 题目描述代码 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root [3,9,…

python笔记_程序流程控制

A,顺序控制 程序从上到下逐行执行 python定义变量时,会合法地向前引用 age 1 age2 age 1 age2 age 1 age 1 ——>错误,age应在age2之前 B,分支控制 1,单分支if 语法 if 条件表达式 : 代码块 说明…

代码随想录day10(2)字符串:反转字符串Ⅱ (leetcode541)

题目要求:给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前…

两天学会微服务网关Gateway-Gateway简介

锋哥原创的微服务网关Gateway视频教程: Gateway微服务网关视频教程(无废话版)_哔哩哔哩_bilibiliGateway微服务网关视频教程(无废话版)共计17条视频,包括:1_Gateway简介、2_Gateway工作原理、3…

Git 基于ED25519、RSA算法生成 SSH 密钥

Git 基于ED25519、RSA算法生成 SSH 密钥 基于ED25519算法&#xff0c;生成密钥对命令如下&#xff1a; ssh-keygen -t ed25519 -C "邮箱地址"基于RSA算法&#xff0c;生成密钥对命令如下&#xff1a; ssh-keygen -t rsa -C "<注释内容>"基于ED255…

中国各省绿色金融试点DID数据集(2010-2023)

一、数据简介 最新的2010-2023年中国31省绿色金融试点DID数据&#xff0c;供大家研究使用。 数据说明&#xff1a;内含绿色金融改革创新试验区名单&#xff0c;将试验区获批当年及以后的政策虚拟变量项是否试点赋值为1&#xff0c;获批之前赋值为0。其中赣江新区、贵安新区为国…

MySQL基础-----SQL语句之DDL语句

目录 前言 开启登录数据库 一、数据库操作 1.查询所有数据库 2.切换使用数据库 3.查询当前使用的数据库 4.创建数据库 创建一个hello数据库, 使用数据库默认的字符集。 创建一个itheima数据库&#xff0c;并且指定字符集 5.删除数据库 二、表操作 1.查询当前数据库所有…

递归与递推(蓝桥杯 c++)

目录 题目一&#xff1a; 代码&#xff1a; 题目二: 代码&#xff1a; 题目三&#xff1a; 代码&#xff1a; 题目四&#xff1a; 代码&#xff1a; 题目一&#xff1a; 代码&#xff1a; #include<iostream> #include<cstring> using namespace std; int …

deep learning with pytorch(一)

1.create a basic nerual network model with pytorch 数据集 Iris UCI Machine Learning Repository fully connected 目标:创建从输入层的代码开始&#xff0c;向前移动到隐藏层&#xff0c;最后到输出层 # %% import torch import torch.nn as nn import torch.nn.funct…

Vue开发实例(五)修改项目入口页面布局

修改项目入口 一、创建新入口二、分析代码&#xff0c;修改入口三、搭建项目主页面布局1、Container 布局容器介绍2、创建布局3、布局器铺满屏幕4、创建Header页面5、加入Aside、Main和Footer模块 一、创建新入口 创建新的入口&#xff0c;取消原来的HelloWorld入口 参考代码…

图像分割 - 凸包(图像的轮廓)

1、前言 之前的文章 绘制几何图形的轮廓,介绍了矩形包围框和圆形包围框。 虽然这两种包围框以及足够逼近图形的边缘,但为了保持几何形状(矩形和圆形),其实与图形的真实轮廓贴合度较差,为了更贴近图形轮廓,这里介绍凸包。 凸包:图形最外层的端点,将端点连接起来,围…

[C++]AVL树怎么转

AVL树是啥 一提到AVL树&#xff0c;脑子里不是旋了&#xff0c;就是悬了。 AVL树之所以难&#xff0c;并不是因为结构难以理解&#xff0c;而是因为他的旋转。 AVL树定义 平衡因子&#xff1a;对于一颗二叉树&#xff0c;某节点的左右子树高度之差&#xff0c;就是该节点的…

训练2布线 玛露希尔

前言 这不是雕刻 是布线纹理绘制blender材质渲染 2D 3D 起手式 八点眼 侧峰线 三角鼻(三面鼻) 下颚角 额, 嘴 线 法令环 橄榄嘴

linux高级编程:线程(二)、进程间的通信方式

线程&#xff1a; 回顾线程&#xff08;一&#xff09;&#xff1a; 1.线程间通信问题 线程间共享同一个资源&#xff08;临界资源&#xff09; 互斥&#xff1a; 排他性访问 linux系统 -- 提供了Posix标准的函数库 -- 互斥量&#xff08;互斥锁&#xff09; 原子操作&#x…

内存管理 -----分段分页

分段 分段&#xff1a;程序的分段地址空间&#xff0c;分段寻址方案 两个问题 分段 &#xff1a;是更好分离和共享 左边是有序的逻辑地址&#xff0c;右边是无序的物理地址&#xff0c;然后需要有一种映射的关系&#xff08;段关联机制&#xff09; 各个程序的分配相应的地址…

Pygame教程01:初识pygame游戏模块

Pygame是一个用于创建基本的2D游戏和图形应用程序。它提供了一套丰富的工具&#xff0c;让开发者能够轻松地创建游戏和其他图形应用程序。Pygame 支持许多功能&#xff0c;包括图像和声音处理、事件处理、碰撞检测、字体渲染等。 Pygame 是在 SDL&#xff08;Simple DirectMed…

181基于matlab的利用LMS算法、格型LMS算法、RLS算法、LSL算法来估计线性预测模型参数a1和a2

基于matlab的利用LMS算法、格型LMS算法、RLS算法、LSL算法来估计线性预测模型参数a1和a2&#xff1b;预测信号由二阶线性预测模型产生。2.利用LMS算法和RLS算法将一个叠加有噪声的信号实现噪声消除&#xff0c;恢复原始信号。有22页试验分析文档。&#xff08;包括程序在内&…

通过MNIST手写数字识别任务快速入门深度学习(事无巨细版)

什么是深度学习 深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个研究方向。 深度学习通过对样本数据的内在规律和特征的提取与抽象,在不同维度和层次上进行处理,让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 相比于初期的…

【算法科目】2024年第二届全国大学生信息技术认证挑战赛 题解

图像压缩 曾经看到过&#xff0c;这是一道洛谷原题&#xff0c;很可惜我没做过&#xff0c;有点看不懂就没尝试。 原题链接&#xff1a;B3851 [GESP202306 四级] 图像压缩 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 因数分解 直接枚举就行了&#xff0c;从2开始找因子&a…

python中的类与对象(3)

目录 一. 类的多继承 二. 类的封装 三. 类的多态 四. 类与对象综合练习&#xff1a;校园管理系统 一. 类的多继承 在&#xff08;2&#xff09;第四节中我们介绍了什么是类的继承&#xff0c;在子类的括号里面写入要继承的父类名。上一节我们只在括号内写了一个父类名&…