与 GPU 共享 RAM
Posted
技术标签:
【中文标题】与 GPU 共享 RAM【英文标题】:Sharing RAM with GPU 【发布时间】:2017-08-11 04:18:33 【问题描述】:我有一个深度学习模型,它处于分配内存错误(权重矩阵)的边缘。我将模型的复杂性调整到可以很好地用于我的预测的水平(但它可能会更好)并且它可以很好地与我的 RAM 内存一起使用,但是当我切换 theano 以使用 gpu 进行更快的训练时(具有 2GB gddr5 vram 的 GPU) ,它会引发分配错误。
我搜索了很多关于如何 并且许多人表示这是不可能(没有参考或解释),即使可以,它也会很慢。而且论坛上总是有一两个人说可以做到(我在谷歌搜索上检查了整个页面 1),但又是一个非常不可靠的信息,没有任何支持。
我理解他们的缓慢论点,但在深度学习中使用 GPU + RAM 是否比使用 CPU + RAM 进行矩阵繁重计算要慢?从来没有人提到过。因为我读过的所有论点(比如购买新卡、设置较低的设置)都是关于游戏的,这对我来说是有意义的,因为你追求更好的即时性能而不是整体速度。
我的盲目猜测是,将 GPU 连接到 RAM 的总线只是系统中最窄的管道(比 RAM 慢),因此使用 CPU + RAM(具有非常快的总线)而不是更快的 GPU( + 内存)。否则,它没有多大意义。
【问题讨论】:
我投票结束这个问题,因为内存共享不是一个编程问题。它是关于硬件、架构,也许还有操作系统及其驱动程序。 【参考方案1】:既然你用 CUDA 标记了你的问题,我可以给你以下答案。
使用Managed memory,您可以从可能位于也可能不在CPU 内存上的内核引用内存。这样,GPU 内存就像缓存一样工作,并且您不受实际 GPU 内存大小的限制。
由于这是一种软件技术,我会说这是 SO 的主题。
【讨论】:
假设 OP 想要重写 theano 等以使用托管内存,在这种情况下,这可能是主题。但是,这不是我对这样一个问题的猜测。你所指的只能对 Pascal GPU 有意义。对于当前的其他 GPU 系列,托管内存不允许您分配 GPU 可访问的内存大小,该大小大于 GPU 上的物理内存。以上是关于与 GPU 共享 RAM的主要内容,如果未能解决你的问题,请参考以下文章
GPU结构与CUDA系列4GPU存储资源:寄存器,本地内存,共享内存,缓存,显存等存储器细节
华为云发布GPU共享型AI容器及Istio服务网格;华为发布下一代智能电网融合传送解决方案;华为与IEEE P1901.1标准工