gpu位置不同的问题

报错RuntimeError: Input and hidden tensors are not at the same device, found input t ensor at cuda:1 and hidden tensor at cuda:0
原因:因为使用了

if torch.cuda.device_count() > 1:
print("Let's use", torch.cuda.device_count(), "GPUs!")
model = nn.DataParallel(model)
model.to(device)
1
2
3
4
而tensor没有指定卡的ID。
解决:两种方式。
1)先定义一个device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')(这里面已经定义了device在卡0上“cuda:0”),然后将model = torch.nn.DataParallel(model,devices_ids=[0, 1, 2])(假设有三张卡)。此后需要将tensor 也迁移到GPU上去。注意所有的tensor必须要在同一张GPU上面,即:tensor1 = tensor1.to(device), tensor2 = tensor2.to(device)等等。注意:一定不能仅仅是tensor1.to(device)而不赋值,这样只会创建副本。
2)直接用tensor.cuda()的方法。即先model = torch.nn.DataParallel(model, device_ids=[0, 1, 2]) (假设有三块卡, 卡的ID 为0, 1, 2),然后tensor1 = tensor1.cuda(0), tensor2=tensor2.cuda(0)等等。(我这里面把所有的tensor全放进ID 为 0 的卡里面,也可以将全部的tensor都放在ID 为1 的卡里面)
————————————————
版权声明:本文为CSDN博主「vivian_ll」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vivian_ll/article/details/97001895

posted @   好好学习0511  阅读(260)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示