为什么pytorch需要的内存比它应该多得多?

时间:2019-09-28 18:59:17

标签: python memory gpu pytorch

我只是在玩pytorch,我想知道为什么它消耗了我的GPU这么多的内存?

我正在将Cuda 10.0与pythorch 1.2.0和torchvision 0.4.0一起使用。

import torch
gpu = torch.device("cuda")
x = torch.ones(int(4e8), device=gpu)
y = torch.ones(int(1e5), device=gpu)

运行上面的代码,我得到了错误: RuntimeError:CUDA内存不足。尝试分配2.00 MiB(GPU 0; 2.00 GiB总容量;已分配1.49 GiB; 0字节可用; 0字节已缓存)

那么,pytorch是否需要〜500MB的gpu内存作为开销?还是这里出了什么问题?

1 个答案:

答案 0 :(得分:0)

在给定的link中可以看到xymeng在github中完成的更多信息和测试

引用xymeng的单词:

  

PyTorch具有自己的cuda内核。根据我的测量,CUDA运行时会为它们分配〜1GB内存。如果在启用了cudnn的情况下编译pytorch,则总内存使用量为1GB + 750M +其他= 2GB +   请注意,这只是我的推测,因为没有关于此的官方文档。让我感到困惑的是,CUDA运行时分配的内存比实际的代码大小大得多(它们大约是线性相关的。如果我删除pytorch内核的一半,内存使用量也会减少一半)。我怀疑内核二进制文件已被压缩,或者它们必须由运行时进行后处理。

似乎适合您的情况。