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