您的位置:首页 > 财经 > 金融 > pytorch GPU cuda 使用 报错 整理

pytorch GPU cuda 使用 报错 整理

2024/11/18 0:33:02 来源:https://blog.csdn.net/qq_31448607/article/details/140400825  浏览:    关键词:pytorch GPU cuda 使用 报错 整理

GPU 使用、报错整理

  • 1. 使用指定GPU(单卡)
    • 1.1 方法1:os.environ['CUDA_VISIBLE_DEVICES']
    • 1.2 方法2:torch.device('cuda:2')
    • 1.3 报错1:RuntimeError: CUDA error: invalid device ordinal CUDA kernel errors might be asynchronously reported
    • 1.4 torch.load报错:RuntimeError: CUDA out of memory...
  • 2. 使用指定GPU(多卡 DataParallel)
      • 2.1 正常DP使用(未测试)
      • 2.2 pyg中DP的使用

1. 使用指定GPU(单卡)

1.1 方法1:os.environ[‘CUDA_VISIBLE_DEVICES’]

os.environ['CUDA_VISIBLE_DEVICES'] = '2'
model = Net().to('cuda')
data = data.to('cuda')

1.2 方法2:torch.device(‘cuda:2’)

device = torch.device('cuda:2')
model = Net().to(device)
data = data .to(device)

1.3 报错1:RuntimeError: CUDA error: invalid device ordinal CUDA kernel errors might be asynchronously reported

解决方法:方法1和方法2不要混着使用

1.4 torch.load报错:RuntimeError: CUDA out of memory…

解决方法:
1)显存不够只能换卡
2)即使使用方法2指定设备,torch.load也默认在0卡(保存卡)上加载。所以,可以使用方法1指定gpu,或torch.load(path, map_location=lambda storage, loc: storage.cuda(2))

2. 使用指定GPU(多卡 DataParallel)

2.1 正常DP使用(未测试)

DP的使用很简单,使用DataParallel将模型包裹住即可,训练代码与单卡一致。
代码:

import torch
from torch.nn import DataParallel
model = Model()
model = DataParallel(model, device_ids = [0, 1])

2.2 pyg中DP的使用

注意:使用torch geometric(pyg)要用torch_geometric.nn里的DataListLoader!!!
代码:

device_ids = [0, 2, 3]
# 需指定主卡,默认是0卡,不指定device会报错:RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:2 and cuda:0!
device = torch.device(f'cuda:{device_ids[0]}')
model = Net() # 输入特征维度,隐藏特征维度,输出特征维度
model = DataParallel(model, device_ids = device_ids)
model.to(device)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com