为什么mxnet的GPU版本比CPU版本花费更多内存?

时间:2017-08-24 05:55:41

标签: deep-learning gpu mxnet

我使用mxnet创建了一个非常简单的网络(两个fc图层,dim为512)。

通过更改ctx = mx.cpu()或ctx = mx.gpu(0),我在CPU和GPU上运行相同的代码。

GPU的内存成本比CPU版本大得多。(我使用' top'而不是' nvidia-smi')检查了它。

看起来很奇怪,因为GPU版本也已经在GPU上有内存,为什么GPU仍然需要更多内存空间?

CPU and GPU memory

(第1行是CPU程序/第2行是GPU程序)

2 个答案:

答案 0 :(得分:1)

在GPU上运行时,您将在内存中加载一堆不同的低级库(CUDA,CUDn等),这些库首先在RAM中分配。如果您的网络非常小,就像当前情况一样,在RAM中加载库的开销将高于在RAM中存储网络权重的成本。

对于任何更大的网络,当在CPU上运行时,权重使用的内存量将显着大于内存中加载的库。

答案 1 :(得分:0)

这可能是由于每个进程运行的时间不同。 看看你的截图,CPU进程有5:48.85而GPU有9:11.20 - 因此GPU训练的运行时间几乎是原因的两倍。