gpt4 book ai didi

cuda - 默认固定内存与零拷贝内存

转载 作者:行者123 更新时间:2023-12-03 08:28:43 26 4
gpt4 key购买 nike

在 CUDA 中,与通过 分配的默认内存相比,我们可以使用固定内存更有效地将数据从主机复制到 GPU。 malloc 在主机。然而,有两种类型的固定内存默认固定内存 零拷贝固定内存 .

默认固定内存将数据从主机复制到 GPU 的速度是正常传输速度的两倍,因此绝对有优势(前提是我们有足够的主机内存进行页面锁定)

在不同版本的固定内存中,即零拷贝内存 ,我们完全不需要将数据从主机复制到 GPU 的 DRAM。内核直接从主机内存读取数据。

我的问题是:这些固定内存类型中哪一种是更好的编程实践。

最佳答案

我认为这取决于您的应用程序(否则,为什么他们会提供两种方式?)

映射的固定内存(零拷贝)在以下情况下很有用:

  • GPU 本身没有内存,无论如何都使用 RAM
  • 您只加载一次数据,但需要对其执行大量计算,并且您希望通过它隐藏内存传输延迟。
  • 主机端想要更改/添加更多数据,或读取结果,而内核仍在运行(例如通信)
  • 数据不适合 GPU 内存

  • 请注意,您还可以使用多个流来复制数据并并行运行内核。

    固定但未映射的内存更好:
  • 当您多次加载或存储数据时。例如:您有多个后续内核,分步执行工作 - 无需每次都从主机加载数据。
  • 没有那么多计算要执行,加载延迟也不会很好地隐藏
  • 关于cuda - 默认固定内存与零拷贝内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5209214/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com