我使用PyTorch进行了一个简单的测试,涉及测量当前GPU内存的使用情况,创建一定大小的张量,将其移动到GPU并再次测量GPU内存。根据我的计算,大约需要6.5k字节来存储张量的每个元素!以下是细分:
nvidia-smi
:384 MiB。a = torch.rand(100000)
device = torch.device('cuda')
b = a.to(device)
(1020-384)*1024*1024/len(b)
# Answer is 6668.94336
至少可以这么说,这很奇怪。为什么存储单个float32
元素需要6.5 KiB的GPU内存?
更新:遵循罗伯特·克罗维拉在评论中的建议,我创建了另一个张量c
,然后将其移动到d
的CUDA设备上。 GPU内存使用没有增加。因此,似乎PyTorch或CUDA需要大约636 MiB进行引导。这是为什么?这个记忆是用来做什么的?对我来说似乎很多!