当前位置:   article > 正文

RuntimeError: CUDA error: out of memory_defaultallocator.cpp:nv

defaultallocator.cpp:nv

服务器使用的是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()
  • 1
  • 2
  • 3

调试代码时,发现只要一调用.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()
  • 1
  • 2
  • 3
  • 4

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

.to(device=device_ids[0])
  • 1

代替使用

.cuda()
  • 1

方法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/220589
推荐阅读
相关标签
  

闽ICP备14008679号