报错分析

当运行以下代码报错:

# 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~