【问题标题】:Pinned memory in CUDACUDA 中的固定内存
【发布时间】:2012-09-16 23:41:00
【问题描述】:

我在某处读到 CUDA 中的固定内存是稀缺资源。固定内存的上限是多少?在 windows 中,在 linux 中?

【问题讨论】:

  • 固定内存是保证在主内存上分配的内存,除非没有足够的空间。主机上的 RAM 越多,可以分配的固定内存就越多。你不能有一个确切的数字。
  • 我认为这不正确..假设我有 4GB 内存,如果我使用 cudaHostAllloc() 分配 3.5GB 内存,那么我们还剩下大约 500MB,那么操作系统可能无法管理500MB以内吧?这种分配必须有一些上限。
  • 我在想这个,是的。操作系统无法通过单个请求成功分配如此巨大的固定内存。但是,此限制可能会随着您拥有的内存量而变化,尽管我无法确认这一点。但是,我确实知道一次可以分配的最大全局内存量会随着您拥有的全局内存量而扩展。我认为分配主机内存的工作方式相同。

标签: memory cuda


【解决方案1】:

固定内存只是系统中的物理 RAM,它被搁置一旁,不允许被操作系统调出。因此,一旦固定,其他进程就无法使用该内存量(有效地减少了其他操作系统可用的内存池)。

因此,最大可固定内存取决于其他进程(其他应用程序、操作系统本身)正在竞争系统内存。在 Windows 或 Linux 中同时运行哪些进程(例如,它们本身是否正在固定内存)将决定在特定时间有多少内存可供您固定。

【讨论】:

  • +1,欢迎来到 StackOverflow,迈克尔!补充一下您的答案:过度订阅固定内存会降低交互式操作系统的性能,因为它会限制可以分页的可用物理内存空间(即,它会导致操作系统更多地“破坏”虚拟内存)。
  • @harrism:确实,这是一个好点。以另一种方式重新表述您的观点,假设您设法为 CUDA 应用程序固定 80% 的总系统内存,那么这意味着只有 20% 的内存供操作系统运行,直到 CUDA 应用程序发布记忆或取消固定它。这很容易导致(我已经不止一次这样做了!)PC 无法使用,因为这就像尝试在几 GB 内存上运行 Windows 7 + 浏览器 + 电子邮件等!
猜你喜欢
  • 1970-01-01
  • 2013-10-16
  • 2013-10-06
  • 2013-05-01
  • 1970-01-01
  • 2011-02-08
  • 2011-08-09
  • 1970-01-01
  • 2014-04-13
相关资源
最近更新 更多