报错分析
当运行以下代码报错:
# 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 osos.environ["CUDA_VISIBLE_DEVICES"] = "1"
因此,注释掉os.environ["CUDA_VISIBLE_DEVICES"] = "1"
后,重新运行程序,顺利解决bug~