参考链接
报错分析
当运行以下代码出现报错:
# 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~文章来源:https://www.toymoban.com/news/detail-764696.html
相关技巧
Pytorch设置GPU编号
- 在终端中运行python程序时设置
CUDA_VISIBLE_DEVICES=1 python main.py
- 在python代码中设置
import os
os.environ['CUDA_VISIBLE_DEVICE']='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://www.toymoban.com/news/detail-764696.html
到了这里,关于已解决RuntimeError: CUDA error: invalid device ordinal CUDA kernel errors might be asynchronously repo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!