CUDA指定显卡时报错及解决-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)
2022/4/2:修改了题目描述,加入了报错信息
错误信息
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的限制,好像也说的过去。
共有 0 条评论