赞
踩
服务器使用的是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()
方法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。