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:修改了题目描述,加入了报错信息

错误信息

  1. 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)
  2. 还有一个错误信息找不到了。

场景描述

  • 工具:pytorch, CUDA
  • 需求:对于8块GPU,使用4号GPU进行训练。
  1. 配置1
    • os.environ['CUDA_VISIBLE_DEVICES'] = [4]
    • model.to(4)
  2. 配置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的限制,好像也说的过去。

参考

You may also like...

发表评论

您的电子邮箱地址不会被公开。

88 + = 95