RuntimeError: CUDA out of memory. Tried to allocate 32.00 MiB (GPU

RuntimeError: CUDA out of memory. Tried to allocate 32.00 MiB (GPU)

  • 1. 问题描述
  • 2. 解决办法

1. 问题描述

Pytorch,GPU显存明明够用,为什么还报错呢?
首先,可能真的是显存不够用,可以减小batch_size解决
还有一种就是,减小batch_size 是没用的。
根本原因是代码指定的GPU实际使用的GPU不一致。你以为代码在1上跑,实际上是在已经有代码运行的其他gpu跑,因此显示显存不足。
比如我遇到的报错:
报错信息已经提示了,30.47 GiB already allocated,说明是代码指定的GPU实际使用的GPU不一致
RuntimeError: CUDA out of memory. Tried to allocate 32.00 MiB (GPU_第1张图片

2. 解决办法

让自己指定的gpu与实际使用的对应一致即可。
RuntimeError: CUDA out of memory. Tried to allocate 32.00 MiB (GPU_第2张图片
比如,现在0,2,3号GPU已经在使用,想利用1号GPU,执行以下代码即可。
在服务器端,执行python代码之前,运行:

export CUDA_VISIBLE_DEVICES=1

再在你想运行的代码里面指定GPU,例如:

self.device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')   # 设备

注意这里指定的是cuda 0而不是cuda1,因为torch会将可用的设备重新编号,如果export CUDA_VISIBLE_DEVICES=1,2,那么此时的cuda 0对应是物理设备1

你可能感兴趣的:(Debug,debug)