RuntimeError: CUDA error: out of memory

服务器使用的是Ubuntu,2080Ti,pytorch1.3,CUDA=10.0的程序在0,1卡正常运行,当换到2,3卡时出现了RuntimeError: CUDA error: out of memory。使用nvidia-smi监控的GPU使用量两块卡分别使用了10M,那么一定不是GPU内存出错的原因。首先看一下出错代码部分

device = torch.device("cuda:2" if torch.cuda.is_available() else "cpu")
net = MFNET_3D() 
net = torch.nn.DataParallel(net,device_ids=device_ids).cuda()

调试代码时,发现只要一调用.cuda(),程序就出现本文的错误,进一步确定是代码的问题(虽然一开始坚信是代码时没有错误的),尝试各种解决方案,并没有有效解决,查看torch.nn.DataParallel是如何使用多GPU加速的,发现一位前辈的介绍,抱着试试的态度,对代码进行修改,修改后的结果是

net = MFNET_3D()
net = net.cuda(device_ids[0])
#device = torch.device("cuda:2" if torch.cuda.is_available() else "cpu")     
net = torch.nn.DataParallel(net,device_ids=device_ids)#.cuda()

如此程序不再出现这个问题,如果在对数据加速时出现该错误,可以尝试使用

.to(device=device_ids[0])

代替使用

.cuda()

方法

你可能感兴趣的:(RuntimeError: CUDA error: out of memory)