【发布时间】:2018-11-13 17:37:39
【问题描述】:
我想澄清一下统一内存,它是如何工作的以及如何有效地使用它。
据我所知,我们使用cudaMallocManaged(ptr, size); 来分配一个统一内存数组。由于 Pascal 架构,可以将大小设置为大于 GPU 上可用的物理内存。
假设现在我有一个 4GB RAM、32GB RAM 用于主机和一个 1TB 文件的 GC。我想解决这个 1TB 的文件,我该如何处理?
如果我理解的很好,我可以将文件放在统一内存中,但是这个统一数组和文件之间的链接是如何进行的呢?这是否意味着我必须在使用cudaMallocManaged 分配的指针中memcpy 整个文件?
最后,告诉我我是否正确。如果 GPU 出现未命中,CPU 将发送它存储在其 RAM 中的数据,如果不是从磁盘发送。它有点简化,但如果它像这样工作,则意味着数据需要在统一数组中。
感谢您的帮助。
【问题讨论】:
标签: c++ cuda unified-memory