【发布时间】:2019-02-21 04:44:26
【问题描述】:
在我的设备函数中,我在主机的全局内存(固定或零拷贝)中存储了数百万次值。在我的主机函数中,循环迭代并一次从全局内存中读取一个值(s.t. 我可以看到从设备生成的值,而不是等待所有值都被生成)。
我应该在零拷贝和固定之间使用哪个以获得更好的性能?
【问题讨论】:
-
什么会阻止您对这两种方法进行基准测试并为自己确定答案?
-
零拷贝和固定内存是一回事。
-
@RobertCrovella 这不是真的。 stackoverflow.com/questions/5209214/…
-
也许您应该仔细阅读您提供的链接的全部内容。 CUDA 4.0 中的统一地址空间功能将默认映射所有固定分配我知道在 64 位操作系统中没有方法可以创建未映射的固定分配。
-
您对 64 位操作系统的理解是错误的。我已经指出了这一点。在 64 位操作系统上,固定内存和映射内存之间存在 1:1 的对应关系,无论您用于分配的 API 调用如何。此外,设备代码无法访问未映射(到设备地址空间)的主机内存。我当然承认零拷贝内存可以用于您描述的目的。但是“固定但未映射”不是一种选择。 1. 因为您无法在运行 CUDA 的 64 位操作系统上创建它 2. 因为即使您可以创建它,您也无法从设备代码访问它。
标签: cuda