【问题标题】:How to efficiently overwrite the memory region on GPU?如何有效地覆盖 GPU 上的内存区域?
【发布时间】:2020-03-01 23:14:57
【问题描述】:

我在 GPU 上分配数据块。我有一种算法可以生成新数据来替换旧数据。新缓冲区具有相同的数据大小。有一个解决方案是将旧数据带回 cpu 然后擦除它,但我认为这是非常低效且非常缓慢的。是否可以在同一位置用新数据覆盖旧元素?

【问题讨论】:

  • 如果您可以在旅途中覆盖旧数据,那么只需 mydata[i]=mydata[i]+math; 否则您可能需要 2 个副本并将它们用作缓冲区 mydataA[i]=mydataB[i]+mydataB[i+1]mydataB[i]=mydataA[i]+mydataA[i+1] 交替使用。

标签: memory memory-management cuda gpu


【解决方案1】:

如果您的内核接受一个指向某个缓冲区的指针,您可以只将原始数据指针传递给该内核,从而导致您的输入数据被内核的结果覆盖。

或者,如果您正在使用需要使用缓冲区的算法,您可以使用 cudaMemcpy 将存储在缓冲区中的结果复制到保存输入数据的内存区域,并在处理过程中覆盖它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2011-12-17
    • 1970-01-01
    • 2023-04-05
    • 2015-11-12
    • 2019-12-10
    • 2021-07-04
    相关资源
    最近更新 更多