当前位置: 代码迷 >> 综合 >> CUDA out of memory. Tried to allocate 16.00 MiB (GPU 0; 6.00 GiB total capacity;总结(1)
  详细解决方案

CUDA out of memory. Tried to allocate 16.00 MiB (GPU 0; 6.00 GiB total capacity;总结(1)

热度:17   发布时间:2023-12-11 21:59:05.0

 CUDA out of memory. Tried to allocate 16.00 MiB (GPU 0; 6.00 GiB total capacity; 4.54 GiB already allocated; 14.94 MiB free; 4.64 GiB reserved in total by PyTorch)

分析问题 CUDA内存超载

解决尝试一:GPU未被调用,

https://blog.csdn.net/xc_zhou/article/details/107737783

 实际上有那么一瞬间调用了。

按照上面的方法调用,还是这样。

我感觉主要问题是很多内存没有被调用,

上面的报错翻译是CUDA内存不足。尝试分配16.00 MiB(GPU 0;总容量6.00 GiB;4.54已分配的GiB;14.94无MiB;PyTorch共预留4.64个GiB)

我想到很多内存没有调用

于是查询了显存充足,但是却出现CUDA error:out of memory错误

方法二:https://www.cnblogs.com/jisongxie/p/10276742.html

先输入代码

import os
import torch
print(torch.cuda.is_available())#是否有可用的gpu
print(torch.cuda.device_count())#有几个可用的gpu
os.environ["CUDA_VISIBLE_DEVICES"] = "0"#声明gpu
dev=torch.device('cuda:0')#调用哪个gpu
a=torch.rand(100,100).to(dev)

结果:

True
1

但是我明明有两个gpu,为什么只说有一个。

我有两个推断:

1.cuda默认选择第一个gpu。

2.cuda只能匹配合适的gpu,也就是我的第二个gpu。

torch.cuda的命令查询 https://www.jianshu.com/p/4b10a3e80321

import os
import torch
print(torch.cuda.is_available())#是否有可用的gpu
print(torch.cuda.device_count())#有几个可用的gpu
print(torch.cuda.current_device())#可用gpu编号
print( torch.cuda.get_device_capability(device=None),  torch.cuda.get_device_name(device=None))#可用gpu内存大小,可用gpu的名字
os.environ["CUDA_VISIBLE_DEVICES"] = "0"#声明gpu
dev=torch.device('cuda:0')#调用哪个gpu
a=torch.rand(100,100).to(dev)

输出

True
1
0
(6, 1) GeForce GTX 1060

答案是推断2

  相关解决方案