当前位置: 首页 > news >正文

RuntimeError: CUDA error: invalid device ordinal

RuntimeError: CUDA error: invalid device ordinal

  • 报错分析:
  • 可能原因1:设置CUDA_VISIBLE_DEVICES的问题
    • 解决办法:
  • 可能原因2:硬件或驱动原因
    • 解决方法:
  • 参考资料

报错分析:

如果你在运行代码时报错:

RuntimeError: CUDA error: invalid device ordinal

这个错误通常表示您指定的 GPU 设备编号不存在或不可用。

可能原因1:设置CUDA_VISIBLE_DEVICES的问题

我回顾一下我是怎么遇到的这个问题:

  1. 我在sh文件里写了一句:CUDA_VISIBLE_DEVICES="1"
  2. 我在sh调用的py文件里又写了一句os.environ["CUDA_VISIBLE_DEVICES"] = "1"
  3. 之后运行程序报错

报错原因
4. 我在sh文件里设置CUDA_VISIBLE_DEVICES="1"来运行程序,这意味着py程序只能看见一张GPU卡,也就是1号卡 。
5. 这一张1号卡,通过物理设备编号到虚拟设备编号的映射,因为GPU卡号索引从0开始,py程序认为整个设备只有一张0号GPU卡。
6. 这时我再在py文件里加一句os.environ[“CUDA_VISIBLE_DEVICES”] = “1”,让其在只认为程序有一张0号卡的时候运行1号卡,它就会报错,认为GPU设备编号不存在。

解决办法:

把py文件里的os.environ["CUDA_VISIBLE_DEVICES"] = "1"删掉即可,只在sh文件里输入指定的卡号即可。

可能原因2:硬件或驱动原因

系统可能确实没有那么多卡,或驱动没装好

解决方法:

  1. 检查GPU数量和设备编号:
    • 使用nvidia-smi命令来查看系统中可用的GPU数量和它们的编号。确保你的代码中使用的设备编号与nvidia-smi显示的编号相匹配。
  2. 访问NVIDIA官网,下载并安装与你的GPU型号和系统相匹配的最新驱动。 确保安装了正确版本的CUDA工具包,并且与你的GPU驱动兼容。
  3. 检查代码中的设备选择逻辑:仔细审查你的代码,特别是与CUDA设备选择和初始化相关的部分。确保在尝试使用CUDA设备之前,已经正确地选择了存在的设备。可以使用如下两条命令来检查设备选择逻辑
    • print(torch.cuda.device_count())
    • print(torch.cuda.current_device())

参考资料

  1. 我自己的实验
  2. 已解决RuntimeError: CUDA error: invalid device ordinal 亲测有效!!!
http://www.lryc.cn/news/398852.html

相关文章:

  • 如何在Qt中添加文本
  • 解决打印PDF文本不清楚的处理办法
  • 【Cesium开发实战】火灾疏散功能的实现,可设置火源点、疏散路径、疏散人数
  • imx6ull/linux应用编程学习(16)emqx ,mqtt创建连接mqtt.fx
  • Debezium系列之:验证mysql、mariadb等兼容mysql协议数据库账号权限
  • Vue.js学习笔记(五)抽奖组件封装——转盘抽奖
  • 使用pip或conda离线下载安装包,使用pip或conda安装离线安装包
  • 产品访问分析
  • 【算法】代码随想录之链表(更新中)
  • react 18中,使用useRef 获取其他组件的dom并操作节点,flushSync强制同步更新useState
  • Jupyter Notebook基础:用IPython实现动态编程
  • Python 爬虫:使用打码平台来识别各种验证码:
  • 理解算法复杂度:空间复杂度详解
  • 浅析Kafka Streams消息流式处理流程及原理
  • QGroundControl的总体架构,模块化设计和主要组件的功能。
  • oracle 表空间文件迁移
  • JVM学习(day1)
  • js项目生产环境中移除 console
  • ROS2 + 科大讯飞 初步实现机器人语音控制
  • HTML5新增的input元素属性:placeholder、required、autofocus、min、max等
  • Cornerstone3D导致浏览器崩溃的踩坑记录
  • 【鸿蒙学习笔记】Stage模型
  • Docker进入MongoDB
  • APP与API:魔法世界的咒语与念咒者
  • 云计算安全需求分析与安全保护工程
  • 七天.NET 8操作SQLite入门到实战 - 第二天 在 Windows 上配置 SQLite环境
  • 操作系统——进程的状态与转换
  • 80. UE5 RPG 实现UI显示技能冷却进度功能
  • Vue2-集成路由Vue Router介绍与使用
  • TemuAPI接口:获取商品详情功能