我是CUDA的新手。我在设备上为浮点变量分配了内存。然后我在内核函数中添加了许多计算值。现在我想对这个变量只进行一次数学运算。我是否必须将其复制回主机才能执行此操作?
答案 0 :(得分:2)
如果您只有一个变量或少量数据,您可能需要考虑在固定内存中的主机上使用零拷贝数据(变量),这些数据也可以在设备上访问。
当设备访问这些变量时,将在PCIE上生成事务以在设备上提供值,然后更新主机上的值。
正如您所看到的,这并不是真正消除副本。但如果只涉及少量数据,则可能对您的应用程序感兴趣。
simple Zero Copy CUDA样本概述了该方法。
我的回答here也给出了一个简单的例子,即在设备和主机上为单个变量使用零拷贝内存。