关于torch.cuda.is_available() 返回False 详细说明及解决

一 cuda 环境检测失败

cuda 环境检测代码:

import torchprint(torch.__version__)
print(torch.cuda.is_available())
print(torch.version.cuda)

cuda 环境检测代码执行结果如下图:

关键代码print(torch.cuda.is_available()) 返回 False 通常表示当前环境下CUDA 设备不可用。这可能电脑没有安装 CUDA 驱动程序或者安装的 PyTorch 版本不支持 CUDA

二 解决思路,先了解问题的本质

1 什么是CUDA,cuda与gpu与PyTorch的关系

 CUDA(Compute Unified Device Architecture)是由 NVIDIA 开发的用于并行计算的平台(通用计算构建的运算平台,是建立GPU显卡驱动层之上,必须与之相匹配。cuda的上层通常是各种机器学习库如PyTorch,cuDNN)。cuda作用是利用 NVIDIA GPU(图形处理单元)的强大计算能力来加速各种科学计算、数值模拟和深度学习任务。cuda与gpu与PyTorch的关系图如下:

上图关键项详细说明:

  1. gpu显卡驱动,作为显卡硬件的接口,操作系统只能通过这个接口来控制显卡进行2D/3D渲染或计算。
  2. CUDA:是“GPU通用计算”构建的运算平台,允许开发人员编写C/C++代码,利用GPU的并行性来执行任务。
  3. PyTorch和cuDNN:流行的深度学习框架,支持CUDA,用于训练和推理深度神经网络。

2 找出问题与解决

根据我们用的框架PyTorch从上面关系图中可以看出torch.cuda.is_available()返回False的原因无非就只有这 几个关系

从上图分析造成的原因: 

  1. cuda与显卡驱动的匹配。
  2. cuda与Tytorch版本的匹配。
  3. gpu驱动与显卡匹配。(在window平台下最不可能发生)
1 cuda与显卡驱动匹配问题(最常见之一)

  如果显卡驱动不是最新的,建议下载最新的显卡驱动,

  在官网找到合适版本的cuda:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

一般根据操作系统平台和版本号 匹配合适版本的cuda下载安装即可。

 安装完成查看安装版本

nvcc --version

 执行后看到版本信息,我当前环境cuda版本是v11.6,如下图:

 打开官网https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html查到v11.6版本行

查看驱动版本

nvidia-smi

执行后查看到的版本号是537.13,  从上图中 cuda 11.6.x参数要求是大于或等于452.39,所以是cuda与显卡驱动是匹配的正常的。如下图:

 2 cuda与pytorch版本的匹配问题(最常见之二)

   假设在最新cuda版本的环境上安装旧版本的PyTorch,那么旧版本的PyTorch可能不会支持。此 时需要删除旧的版本,从官网下载新版本或指定版本的PyTorch即可。

PyTorch官网:

重新安装后,验证pytorch安装成功:

import torchprint(torch.__version__)
print(torch.cuda.is_available())
print(torch.version.cuda)

执行上面代码后,安装验证通过如下图: 

3 排查gpu驱动与显卡匹配

  在window平台最不可能发生,如果有问题只要在官网选择驱动下载重新安装最新的显卡驱动就可解决。

排查也简单,看一下任务管理器中的gpu情况就知道安装是否正确,如下图:

显卡驱动官方下载:https://www.nvidia.com/Download/index.aspx?lang=en-us

3 总结 

  此次错误PyTorch 的版本None,没有安装成功,重新在PyTorch官网下载安装后即正常使用。

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

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

相关文章

java.lang.IllegalStateException: Promise already completed.

spark submit 提交作业的时候提示Promise already complete 完整日志如下 File "/data5/hadoop/yarn/local/usercache/processuser/appcache/application_1706192609294_136972/container_e41_1706192609294_136972_02_000001/py4j-0.10.6-src.zip/py4j/protocol.py"…

Draw.io绘制UML图教程

一、draw.io介绍 1、draw.io简介 draw.io 是一款强大的免费在线图表绘制工具,支持创建流程图、组织结构图、时序图等多种图表类型。它提供丰富的形状库、强大的文本编辑和样式设置功能,使用户能够轻松创建专业级图表。draw.io 具有用户友好的界面&…

LeetCode 热题 100 | 二叉树(终)

目录 1 二叉树小结 1.1 模式一 1.2 模式二 2 236. 二叉树的最近公共祖先 3 124. 二叉树中的最大路径和 菜鸟做题(返校版),语言是 C 1 二叉树小结 菜鸟碎碎念 通过对二叉树的练习,我对 “递归” 有了一些肤浅的理解。…

【激光SLAM】基于滤波的激光SLAM方法(Grid-based)

Filter-based SLAM 贝叶斯滤波数学概念贝叶斯滤波特性贝叶斯滤波的推导 粒子滤波(Particle filter)特性流程状态传播权重评估重采样算法流程存在的问题 FastSLAM的原理及优化FastSLAM介绍算法流程FastSLAM优化存在的问题及优化进一步优化proposal分布最终…

RabbitMQ学习整理————基于RabbitMQ实现RPC

基于RabbitMQ实现RPC 前言什么是RPCRabbitMQ如何实现RPCRPC简单示例通过Spring AMQP实现RPC 前言 这边参考了RabbitMQ的官网,想整理一篇关于RabbitMQ实现RPC调用的博客,打算把两种实现RPC调用的都整理一下,一个是使用官方提供的一个Java cli…

思维模型整合

思维模型整合 4P--- 4C思考模型能力圈模型 4P— 4C思考模型 在竞争激烈的今天,每个赛道都有众多可以为客户提供相同价值的对手,而赛道中的佼佼者之所以能打败大部分人,可能并不是他们能比别人更能讨好大众,而是因为在这个赛道它有…

Jmeter学习系列之六:阶梯加压线程组Stepping Thread Group详解

性能测试中,有时需要模拟一种实际生产中经常出现的情况,即:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间。 在jmeter中,有这样一个插件,可以帮我们实现这个功能,这个插件就是:Stepping Thread Group 1、下载配置方法 1.1.下载配置 插件下载地址:…

Selenium定位不到元素怎么办?一定要这么做

在使用Selenium进行自动化测试时,碰到无法定位元素该怎么办?这里总结了9种情况下的元素定位方法: 1、frame/iframe表单嵌套 WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌的页面元素无法直接定位。 解决…

Jenkins持续集成Python项目

一、前言   之前学习了很多自动化测试框架,但是写的脚本都是本地执行,多数用来造数据。最近公司掀起一股自动化测试的风,所以就想研究下如何集成jenkins,本次采用pytest,用的是阿里云服务器centos7。 二、服务器环境…

石头剪刀布游戏(C语言)

题目描述 石头剪刀布游戏有 3 种出拳形状:石头、剪刀、布。分别用字母 A , B , C 表示。 游戏规则: 出拳形状之间的胜负规则如下: A > B;B > C;C > A;">"左边一个字母,表示相对优…

bat 查找文件所在

脚本 在批处理文件(.bat)中查找文件所在的目录,你可以使用dir命令结合循环和条件语句来实现。以下是一个简单的示例,演示如何在批处理文件中查找指定文件并输出其所在目录: echo off setlocal enabledelayedexpansio…

Vue 封装的 axios 类的使用(小bug 改进)

http类 import { baseUrl } from "./config"; //引入config.js中的配置 import axios from "axios"; //引入axios import qs from "querystringify"; //form-Data请求时的工具类class Http{axios null;lastRequestIntercept null…

开源LLMs导览:工作原理、顶级LLM列表对比

目录 一、开源 LLM 是什么意思?二、开源LLM如何工作?2.1 预训练2.2 代币化2.3 开源LLM的微调2.4 输入编码2.5 训练与优化2.6 推理 三、开源LLM对组织的好处3.1 增强的数据安全和隐私3.2 节约成本3.3 减少供应商依赖性3.4 代码透明度 四、哪种LLM模式最好…

数据可视化在商业领域有哪些重要性?

数据可视化在商业领域的重要性体现在多个方面,它通过将复杂的数据集转化为直观、易于理解的图形和图表,帮助企业和组织做出更明智的决策。以下是数据可视化对商业的一些关键重要性: 提高决策效率:通过直观的图表和图形&#xff0c…

漫漫数学之旅031

文章目录 经典格言数学习题古今评注名人小传 - 经典格言 如果没有数学知识,这个世界的事物是无法搞清楚的。——罗杰培根(Roger Bacon) 好的,各位看官,让我们来听听罗杰培根这位中世纪的“科学老顽童”是怎么说的&…

罗克韦尔AB的PLC实现ModbusTCP和ModbusRTU协议标签方式通讯

本文是通过IGT-DSER智能网关读写AB罗克韦尔Compact、Control系列PLC的标签数据缓存并转为Modbus从站协议,与上位机通讯的案例。 打开智能网关的参数软件(下载地址),通过功能->数据转发与平台对接,再选择数据转发与缓存’,进入以…

基于java+springboot+vue实现的城市垃圾分类管理系统(文末源码+Lw)23-191

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本城市垃圾分类管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数…

基于Java+Selenium的WebUI自动化测试框架(一)---页面元素定位器

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

使用python查看官网是否发布新的内容

目录 前言 第一章、python介绍和使用pip install下载包 1.python介绍 2.使用vscode编写python 3.pip install的使用 第二章、查看官网是否发布新的内容 第三章、代码实现 目录结构 代码实现 check_new_news.py files.py news.py main.py file.txt 运行演示 前言 也…

【Azure 架构师学习笔记】- Azure Databricks (7) --Unity Catalog(UC) 基本概念和组件

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (6) - 配置Unity Catalog 前言 在以前的Databricks中,主要由Workspace和集群、SQL Warehouse组成, 这两年Databricks公…