文章首发及后续更新:https://mwhls.top/3718.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢!
错误信息
RuntimeError: Expected tensor for argument #1 ‘input’ to have the same device as tensor for argument #2 ‘weight’; but device 0 does not equal 1 (while checking arguments for cudnn_convolution) - 还有一个错误信息找不到了。
场景描述
- 工具:pytorch, CUDA
- 需求:对于8块GPU,使用4号GPU进行训练。
- 配置1
os.environ[‘CUDA_VISIBLE_DEVICES’] = [4] model.to(4)
- 配置2
os.environ[‘CUDA_VISIBLE_DEVICES’] = [4, 5, 6] model.to(1)
解决方法
os.environ[‘CUDA_VISIBLE_DEVICES’] = [4] model.to(0)
说明
os.environ[‘CUDA_VISIBLE_DEVICES’] = [4] 用来设置可用的显卡,表示后续仅4号显卡可用。model.to(0) 是在可用的显卡中找到第4号显卡,但因为上面设置了只有一块显卡可用,所以这里设置成0时才能正确使用这块显卡。- 但按理说[4, 5, 6]的
model.to(1) 应该用5号显卡才对,但实际上会出现错误信息1,好在一张显卡也够用。 - 现在仔细想想一个是CUDA的限制,一个是torch的限制,好像也说的过去。
参考
|