PyTorch为什么要使用这么多的GPU内存来存储张量?

时间:2020-06-24 03:20:05

标签: pytorch

我使用PyTorch进行了一个简单的测试,涉及测量当前GPU内存的使用情况,创建一定大小的张量,将其移动到GPU并再次测量GPU内存。根据我的计算,大约需要6.5k字节来存储张量的每个元素!以下是细分:

  1. 在创建张量之前使用GPU内存,如nvidia-smi:384 MiB。
  2. 创建具有100,000个随机元素的张量:
a = torch.rand(100000)
  1. 将张量传输到GPU:
device = torch.device('cuda')
b = a.to(device)
  1. 传输后使用的GPU内存:1020 MiB
  2. 计算每个张量元素的内存变化
(1020-384)*1024*1024/len(b)
# Answer is 6668.94336

至少可以这么说,这很奇怪。为什么存储单个float32元素需要6.5 KiB的GPU内存?


更新:遵循罗伯特·克罗维拉在评论中的建议,我创建了另一个张量c,然后将其移动到d的CUDA设备上。 GPU内存使用没有增加。因此,似乎PyTorch或CUDA需要大约636 MiB进行引导。这是为什么?这个记忆是用来做什么的?对我来说似乎很多!

0 个答案:

没有答案