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()

方法

全部评论
😎
点赞 回复 分享
发布于 2020-01-07 20:23
棒棒哒
点赞 回复 分享
发布于 2019-11-12 15:24

相关推荐

04-30 15:51
已编辑
上海交通大学 机械工程师
点赞 评论 收藏
分享
下北泽:都是校友,还是同届,我就说直白点,不委婉了,我相信你应该也不是个玻璃心,首先你觉得一个双非的绩点写简历上有用吗?班长职务有用吗?ccf有用吗?企业会关心你高数满分与否吗?第二,第一个项目实在太烂,一眼就能看出是外卖,还是毫无包装的外卖,使用JWT来鉴权,把热点数据放进Redis这两个点居然还能写进简历里,说难听点这两个东西都是学个几十分钟,调用个API就能完成的事情,在双非一本的条件下,这种项目你觉得能拿出手吗,第二个项目你写的东西和你的求职方向有任何的匹配吗?第三,计设那一块毫无价值,如果想突出自己会前端,直接写入专业技能不行吗,最后,专业技能里像深入理解JVM底层原理这种你觉得这句话你自己真的能匹配吗?都是校友加上同届,我措辞直接,但希望能点出你的问题,想进大厂还得继续沉淀项目和学习
点赞 评论 收藏
分享
Elastic90:公司不要求加班,但 又不允许你准点下班,经典又当又立
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务