Deep learning 为什么mxnet的GPU版本比CPU版本占用更多内存?

Deep learning 为什么mxnet的GPU版本比CPU版本占用更多内存?,deep-learning,gpu,mxnet,Deep Learning,Gpu,Mxnet,我使用mxnettwo fc层制作了一个非常简单的网络,dim为512 通过更改ctx=mx.cpu或ctx=mx.gpu0,我在cpu和GPU上运行相同的代码 GPU的内存成本比CPU版本大得多。我检查了使用“top”而不是“nvidia smi” 这似乎很奇怪,既然GPU版本已经在GPU上有了内存,为什么GPU还需要更多的内存空间呢 第1行是CPU程序,第2行是GPU程序,这可能是因为每个进程运行的时间不同。 看看你的屏幕截图,CPU进程是5:48.85,而GPU是9:11.20,所以GPU

我使用mxnettwo fc层制作了一个非常简单的网络,dim为512

通过更改ctx=mx.cpu或ctx=mx.gpu0,我在cpu和GPU上运行相同的代码

GPU的内存成本比CPU版本大得多。我检查了使用“top”而不是“nvidia smi”

这似乎很奇怪,既然GPU版本已经在GPU上有了内存,为什么GPU还需要更多的内存空间呢


第1行是CPU程序,第2行是GPU程序,这可能是因为每个进程运行的时间不同。
看看你的屏幕截图,CPU进程是5:48.85,而GPU是9:11.20,所以GPU训练运行的时间几乎是这个原因的两倍

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

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