仅在CUDA上修改设备内存一次

时间:2013-12-25 23:20:55

标签: c++ c cuda

我是CUDA的新手。我在设备上为浮点变量分配了内存。然后我在内核函数中添加了许多计算值。现在我想对这个变量只进行一次数学运算。我是否必须将其复制回主机才能执行此操作?

1 个答案:

答案 0 :(得分:2)

如果您只有一个变量或少量数据,您可能需要考虑在固定内存中的主机上使用零拷贝数据(变量),这些数据也可以在设备上访问。

当设备访问这些变量时,将在PCIE上生成事务以在设备上提供值,然后更新主机上的值。

正如您所看到的,这并不是真正消除副本。但如果只涉及少量数据,则可能对您的应用程序感兴趣。

simple Zero Copy CUDA样本概述了该方法。

我的回答here也给出了一个简单的例子,即在设备和主机上为单个变量使用零拷贝内存。