使用服务器进行单机多卡数据并行训练的时候,出现了一个小问题,本来以为可以直接创建4个process,可以4路数据并行,结果运行时发现报以下错:
RuntimeError: CUDA error: invalid device ordinal
原因:当前设备的GPU数量与cuda数量不匹配,
解决方案:
(1)先使用nvidia-smi命令查看服务器GPU数量
nvidia-smi
比如我这里看了一下,只有两张1080 Ti的卡
(2)根据GPU的数量改以下代码里的进程数量
(3)运行成功
#这里是调用cuda设备(GPU)
device = torch.device("cuda:{}".format(rank))