【问题标题】:cuda: need of synchronization for reading device memory variablecuda:读取设备内存变量需要同步
【发布时间】:2012-02-22 11:03:47
【问题描述】:

我正在 cuda 中运行一个迭代程序,该程序一直运行到收敛。正如这篇 SO 帖子 (Are cuda kernel calls synchronous or asynchronous) 中所说,从 CPU 的角度来看,cuda 内核是异步的。

在我的程序中,其中一个内核检查收敛并将布尔值返回给主机以进行读取。我想知道,我是否需要这样做

cudaDeviceSynchronize()

在读取布尔值之前?

【问题讨论】:

  • 您需要在内核执行之后和读取布尔值之前进行同步,因为在内核执行后控制可以立即返回给主机。并且必须写入值的线程可能尚未运行。

标签: synchronization cuda


【解决方案1】:

这取决于您如何将布尔值返回给 CPU。 你在使用 cudaMemcpy 吗? 如果是,那么您不必使用 cudaDeviceSynchronize(),因为 cudaMemcpy 将阻塞直到内核完成执行,然后将数据从 GPU 复制到 CPU。

【讨论】:

  • 是的,我正在使用这个。谢谢。
猜你喜欢
  • 2012-07-10
  • 2012-01-04
  • 1970-01-01
  • 2012-02-03
  • 2012-04-27
  • 2021-04-23
  • 2011-10-25
  • 2023-03-19
  • 2017-06-26
相关资源
最近更新 更多