已解决RuntimeError: CUDA error: invalid device ordinal CUDA kernel errors might be asynchronously repo

文章目录

  • 报错分析
  • 解决方法
  • 相关技巧
    • Pytorch设置GPU编号
    • 检查GPU是否可用
    • 显示当前可用的GPU数量
  • 结尾

参考链接

报错分析

当运行以下代码出现报错:

# self.opt.gpu_ids = ["1"]
torch.cuda.set_device(self.opt.gpu_ids[0])

报错信息如下

RuntimeError: CUDA error: invalid device ordinal

CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.

For debugging consider passing CUDA_LAUNCH_BLOCKING=1.

报错完整截图

报错

报错的信息告诉我们,编号”1″是无效的设备序号。但我使用的设备属于单机多卡,是有编号为”1″的显卡的。

解决方法

检查报错代码前面执行过的程序,特别是导入第三方库部分,发现利用os库指定了该程序可见的GPU编号及数量,即:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"

因此,注释掉os.environ[“CUDA_VISIBLE_DEVICES”] = “1”后,重新运行程序,顺利解决bug~


相关技巧

Pytorch设置GPU编号

  1. 在终端中运行python程序时设置
CUDA_VISIBLE_DEVICES=1 python main.py
  1. 在python代码中设置
import os
os.environ['CUDA_VISIBLE_DEVICE']='1' # 使用编号为1的显卡
  1. 在python代码中使用函数torch.cuda.set_device设置
import torch
torch.cuda.set_device("1")

检查GPU是否可用

import torch
torch.cuda.is_available() # 判断是否可以使用gpu计算

显示当前可用的GPU数量

import torch
torch.cuda.device_count()  # 显示gpu数量

结尾

亲爱的读者,首先感谢抽出宝贵的时间来阅读我们的博客。我们真诚地欢迎您留下评论和意见,因为这对我们来说意义非凡。

俗话说,当局者迷,旁观者清。的客观视角对于我们发现博文的不足、提升内容质量起着不可替代的作用。

如果您觉得我们的博文给您带来了启发,那么,希望能为我们点个免费的赞/关注您的支持和鼓励是我们持续创作的动力

请放心,我们会持续努力创作,并不断优化博文质量,只为给带来更佳的阅读体验。

再次感谢的阅读,愿我们共同成长,共享智慧的果实!

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/cc3bf8c8be.html