cuda:读取设备内存变量需要同步
Posted
技术标签:
【中文标题】cuda:读取设备内存变量需要同步【英文标题】:cuda: need of synchronization for reading device memory variable 【发布时间】:2012-02-22 11:03:47 【问题描述】:我正在 cuda 中运行一个迭代程序,该程序一直运行到收敛。正如这篇 SO 帖子 (Are cuda kernel calls synchronous or asynchronous) 中所说,从 CPU 的角度来看,cuda 内核是异步的。
在我的程序中,其中一个内核检查收敛并将布尔值返回给主机以进行读取。我想知道,我是否需要这样做
cudaDeviceSynchronize()
在读取布尔值之前?
【问题讨论】:
您需要在内核执行之后和读取布尔值之前进行同步,因为在内核执行后控制可以立即返回给主机。并且必须写入值的线程可能尚未运行。 【参考方案1】:这取决于您如何将布尔值返回给 CPU。 你在使用 cudaMemcpy 吗? 如果是,那么您不必使用 cudaDeviceSynchronize(),因为 cudaMemcpy 将阻塞直到内核完成执行,然后将数据从 GPU 复制到 CPU。
【讨论】:
是的,我正在使用这个。谢谢。以上是关于cuda:读取设备内存变量需要同步的主要内容,如果未能解决你的问题,请参考以下文章