Synchronization cuda:读取设备内存变量需要同步

Synchronization cuda:读取设备内存变量需要同步,synchronization,cuda,Synchronization,Cuda,我在cuda中运行一个迭代程序,一直运行到收敛。正如本文()所述,从CPU的角度来看,cuda内核是异步的 在我的程序中,一个内核检查收敛性,并将布尔值返回给主机读取。我想知道,我是否需要这样做 cudaDeviceSynchronize() 读取布尔值之前?这取决于如何将布尔值返回CPU。 你在用cudaMemcpy吗? 如果是,则不必使用cudaDeviceSynchronize(),因为cudaMemcpy将阻塞直到内核完成执行,然后将数据从GPU复制到CPU。这取决于如何将布尔值返回到

我在cuda中运行一个迭代程序,一直运行到收敛。正如本文()所述,从CPU的角度来看,cuda内核是异步的

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

cudaDeviceSynchronize()

读取布尔值之前?

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

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

是的,我正在使用它。谢谢。是的,我正在用这个。谢谢。您需要在内核执行后和读取布尔值之前进行同步,因为可以在内核执行后立即将控件返回到主机。必须写入该值的线程可能尚未运行。在内核执行之后和读取布尔值之前,Yuo需要同步,因为在内核执行之后,可以立即将控件返回到主机。必须写入该值的线程可能在该时间尚未运行。