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

文章目录

  • 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的理解还是有很多不到位的地方,需要后面不断的实践补充

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【大厂AI课学习笔记NO.56】(9)模型评测

作者简介:giszz,腾讯云人工智能从业者TCA认证,信息系统项目管理师。 博客地址:https://giszz.blog.csdn.net 声明:本学习笔记来自腾讯云人工智能课程,叠加作者查阅的背景资料、延伸阅读信息,及学…

微信小程序证书评级导致接口无法访问问题

微信小程序的ssl证书到期后, 更换了免费的ssl证书, 是在freessl网站申请的, 配置完了,后台可以访问https网页,但是小程序还是无法访问, 开始没有怀疑是https证书的问题, 调适了好长时间的代码&a…

前后端分离vue+nodejs高校体育运动会比赛系统08fv2-python-php-java

实现了一个完整的高校体育运动会比赛系统系统,其中主要有运动项目模块、学生模块、项目类型模块、用户表模块、token表模块、关于我们模块、收藏表模块、公告信息模块、留言板模块、运动论坛模块、配置文件模块、裁判员模块、比赛成绩模块、比赛报名模块、关于我们模…

9、taocms代码审计

一、XSS 1、DOM型xss 限制 无复现 payload: aa)alert(1)( 触发的参数:name代码 根据路由找到对应的文件,在api.php里接受全局变量action,最终赋值给$m,判断 如果$m不在数组就结束,新建方法复制给$model。检查类的方法是否存…

ctf_show笔记篇(web入门---爆破)

爆破 21:直接bp抓包跑字典,需base64加密 22:可用工具跑也可用浏览器找还可以用网上做好的域名查找去找 23:此题需跑脚本已经附上自写脚本 最后跑出来六个答案一个一个尝试得到答案为3j import hashlibm "0123456789qwert…

安卓之ContentProvider的应用场景以及优劣分析

摘要 本文旨在对Android开发中的ContentProvider进行深入探讨。ContentProvider是Android系统中四大组件之一,主要用于在不同的应用程序之间共享数据。本文首先对ContentProvider进行概述,然后分析其应用场景,接着对其优势和劣势进行分析&…

Linux设备模型(十一) - platform设备

一,platform device概述 在Linux2.6以后的设备驱动模型中,需关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候, 会寻找与之匹配的驱动;相反的,在系统每注册一个设备的时…

开发者38万+,鸿蒙开发岗为何却无人敢应聘?

鸿蒙校园公开课已走进135家高校,305所高校学生参与鸿蒙活动,286家企业参加鸿蒙生态学堂,38万开发者通过鸿蒙认证。 居上华为官方是说有通过鸿蒙开发者认证的已有38万。具体有多少开发者并没有明确表示。除此之外还有200家头部应用加速鸿蒙原…

【Golang切片】

切片 切片的引入内存分析切片的定义切片的遍历切片注意事项 切片的引入 【1】切片(slice)是golang中一种特有的数据类型 【2】数组有特定的用处,但是却有一些呆板(数组长度固定不可变),所以在Go语言的代码…

面试题VUE篇

文章目录 Vue 的核心是什么/请简述你对 vue 的理解请简述 vue 的单向数据流槽口请简述Vue 常用的修饰符有哪些1. 普通修饰符2. 事件修饰符3. 键盘修饰符4. 系统修饰符 v-text 与{{}}与 v-html 区别v-on 可以绑定多个方法吗Vue 循环的 key 作用什么是计算属性Vue 单页面的优缺点…

最新版阿里云Linux CentOS7 ecs-user用户安装Mysql8详细教程(超简单)

经过两天的踩坑后,终于成功安装,并找到了最快捷的安装方式。接下来就由我来给大家介绍不踩坑安装大法! 一、下载Mysql 首先前往Mysql官网下载 MySQL官方下载地址 第一步,选择安装包,这是最关键的一步,选错安…

进程与线程:通过实际生活来解析计算机的基本运作单位

进程与线程 进程与线程:详细解析计算机的基本运作单位1. 进程:独立的执行环境1.1 进程的特点: 2. 线程:轻量级的执行单元2.1 线程的特点: 3. 区别和联系4. 表格 进程与线程:详细解析计算机的基本运作单位 在…

AsConvSR | NTIRE2023-RTSR-Track1冠军方案

编辑 | Happy 首发 | AIWalker 链接 | https://mp.weixin.qq.com/s/p9u6RYkd37MmN12rUCMCuQ 前段时间,NTIRE2023各个竞赛落下帷幕,近期各个冠亚军方案提出者也在逐步公开方案细节。今天给大家概要介绍一下"RTSR-Track1"赛道冠军方案&#xff…

【Leetcode每日一题】前缀和(难度⭐)(25)

1. 题目解析 题目链接:DP34 【模板】前缀和 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 核心在于计算题目所给区间数组元素和返回即可。 2. 算法原理 为了提高计算效率,我们可以预先计算出一个「前缀…

【NDK系列】Android tombstone文件分析

文件位置 data/tombstone/tombstone_xx.txt 获取tombstone文件命令: adb shell cp /data/tombstones ./tombstones 触发时机 NDK程序在发生崩溃时,它会在路径/data/tombstones/下产生导致程序crash的文件tombstone_xx,记录了死亡了进程的…

Appium移动端自动化测试-(Java)

目录 环境搭建ADB调试工具adb构成adb工作原理adb常用命令电脑连接多个设备跟模拟器使用adb包名与界面名的概念如何获取包名和界面名文件传输获取app启动时间获取手机日志其他命令 Appium全自动化测试框架(python)冲错了序言 环境搭建Appium客户端安装App…

【洛谷学习自留】p5707 上学迟到

解题思路: 1.先用给出的时间和速度(如果无法整除,则时间加一),计算出时间(分),然后将时间加上10分钟。 2.创建一个计时器,设置一个日期,保证时分秒部分&#…

【简说八股】Redisson的守护线程是怎么实现的

Redisson Redisson 是一个 Java 语言实现的 Redis SDK 客户端,在使用分布式锁时,它就采用了「自动续期」的方案来避免锁过期,这个守护线程我们一般也把它叫做「看门狗」线程。 Redission是一个在Java环境中使用的开源的分布式缓存和分布式锁实…

经典的算法面试题(1)

题目: 给定一个整数数组 nums,编写一个算法将所有的0移到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 注意:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。 这…

最长上升子序列(LIS)简介及其例题分析

一.最长上升子序列(LIS)的相关知识 1.最长上升子序列(Longest Increasing Subsequence),简称LIS,也有些情况求的是最长非降序子序列,二者区别就是序列中是否可以有相等的数。假设我们有一个序…