【问题标题】:How to use graphics memory as RAM? [closed]如何将显存用作 RAM? [关闭]
【发布时间】:2011-09-13 08:58:38
【问题描述】:

由于显卡提供大量 RAM(0.5GiB 到 2GiB)并且使用CUDA、Stream 和更便携的OpenCL 对 GPU 的 API 访问并不难,我想知道是否可以使用显卡内存作为 RAM。 Grahics RAM 可能比 real RAM 有更大的延迟(来自 CPU),但它肯定比 HDD 快,因此它可能是缓存的最佳选择。

是否可以直接访问图形内存,或者至少在自己的应用程序中使用薄内存管理层(而不是免费用于操作系统)?如果是这样,最好的方法是什么?

【问题讨论】:

  • 查看 footy 的回答,这是一个 Linux 特定的 hack。除此之外,你没有运气。 OpenCL 和类似的 API 不允许您将图形内存用作额外的 RAM 或交换空间。相反,您在显卡上分配的任何数量的 RAM也作为系统 RAM 中的副本维护,即您实际上是“失去”了 RAM,而不是“获得了一些”。
  • 你提到的API都不支持内核空间的调用,它们只是用户空间的。因此,如果您要尝试执行此操作,则需要通过单独的内核空间进程使用用户空间驱动程序或守护程序(想到 Linux FUSE)。我投票决定关闭它,因为它确实与 stackoverflow 无关。
  • @Damon,只有当你明确地在主内存中保留卷影副本时才会出现这种情况。
  • @Jasper Bekkers:不需要,驱动程序已经这样做了。 OpenCL,就像 OpenGL 一样,可以保证您传递给它的数据,例如如果发生意外情况,放入缓冲区对象不会神奇地消失。您的 CL 上下文与未知数量的其他 CL 和/或 GL 上下文、帧缓冲区等竞争显卡上的内存。分辨率切换(和十几个其他事件)可能意味着您的数据无效。驱动程序只有在始终保留您交给它的所有数据的至少一份副本时,才能信守其完整性承诺。
  • @talonmies 在自己的应用程序中使用图形 RAM 会很好。它应该使用某种新的放置。也许可以编写一个分配器,然后将 map 与该分配器一起使用。

标签: memory memory-management cuda opencl


【解决方案1】:

是的,您可以在 Linux 上将其用作交换内存。详情请参考链接here。

在 Linux 中,可以将其用作交换空间,甚至可以用作 RAM 磁盘。

请注意

拥有快速交换或 RAM 非常好 家庭计算机上的磁盘,但要 警告,如果加载了二进制驱动程序 对于 X,它可能会冻结整个系统 或创建图形故障。通常 没有办法告诉司机怎么做 可以使用很多内存,所以它不会 知道上限。然而 可以使用 VESA 驱动程序,因为它 提供了设置的可能性 视频 RAM 大小。

所以,直接渲染或快速交换。 您的选择。

不同于主板 RAM 和硬盘 驱动器,没有任何已知的视频 具有 ECC 内存的卡。这可能 对图形来说没什么大不了的 渲染,但你绝对不会 想要将关键数据放入其中或使用 服务器上的此功能。

【讨论】:

猜你喜欢
  • 2013-11-21
  • 1970-01-01
  • 2015-04-01
  • 1970-01-01
  • 2015-02-13
  • 2014-03-15
  • 1970-01-01
  • 2013-03-25
  • 2022-01-22
相关资源
最近更新 更多