我在cuda中运行一个迭代程序,直到收敛。正如在这篇SO帖子中所说的那样(Are cuda kernel calls synchronous or asynchronous),从CPU的角度来看,cuda内核是异步的。
在我的程序中,其中一个内核检查收敛并将布尔值返回给要读取的主机。我想知道,我是否需要做
cudaDeviceSynchronize()
在读取布尔值之前?
答案 0 :(得分:5)
这取决于如何将布尔值返回给CPU。 你在用cudaMemcpy吗? 如果是,则不必使用cudaDeviceSynchronize(),因为cudaMemcpy将阻塞,直到内核完成执行,然后将数据从GPU复制到CPU。