【问题标题】:Sharing RAM with GPU与 GPU 共享 RAM
【发布时间】:2017-08-11 04:18:33
【问题描述】:

我有一个深度学习模型,它处于分配内存错误(权重矩阵)的边缘。我将模型的复杂性调整到可以很好地用于我的预测的水平(但它可能会更好)并且它可以很好地与我的 RAM 内存一起使用,但是当我切换 theano 以使用 gpu 进行更快的训练时(具有 2GB gddr5 vram 的 GPU) ,它会引发分配错误。

我搜索了很多关于如何与 GPU 共享 RAM 并且许多人表示这是不可能(没有参考或解释),即使可以,它也会很慢。而且论坛上总是有一两个人说可以做到(我在谷歌搜索上检查了整个页面 1),但又是一个非常不可靠的信息,没有任何支持。

我理解他们的缓慢论点,但在深度学习中使用 GPU + RAM 是否比使用 CPU + RAM 进行矩阵繁重计算要慢?从来没有人提到过。因为我读过的所有论点(比如购买新卡、设置较低的设置)都是关于游戏的,这对我来说是有意义的,因为你追求更好的即时性能而不是整体速度。

我的盲目猜测是,将 GPU 连接到 RAM 的总线只是系统中最窄的管道(比 RAM 慢),因此使用 CPU + RAM(具有非常快的总线)而不是更快的 GPU( + 内存)。否则,它没有多大意义。

【问题讨论】:

  • 我投票结束这个问题,因为内存共享不是一个编程问题。它是关于硬件、架构,也许还有操作系统及其驱动程序。

标签: python performance memory cuda theano


【解决方案1】:

既然你用 CUDA 标记了你的问题,我可以给你以下答案。

使用Managed memory,您可以从可能位于也可能不在CPU 内存上的内核引用内存。这样,GPU 内存就像缓存一样工作,并且您不受实际 GPU 内存大小的限制。

由于这是一种软件技术,我会说这是 SO 的主题。

【讨论】:

  • 假设 OP 想要重写 theano 等以使用托管内存,在这种情况下,这可能是主题。但是,这不是我对这样一个问题的猜测。你所指的只能对 Pascal GPU 有意义。对于当前的其他 GPU 系列,托管内存不允许您分配 GPU 可访问的内存大小,该大小大于 GPU 上的物理内存。
猜你喜欢
  • 2018-07-07
  • 2017-08-28
  • 2012-06-24
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
  • 2020-04-06
  • 2020-04-28
相关资源
最近更新 更多