哪些情况下应当使用cudaDeviceSynchronize()?

jiandingzhe 2012-10-13 10:08:32
cuda的很多调用都是异步的,会在执行完成之前就返回。那么假设这个简单的流程:

1:cudaMemcpy传数据到device。
2:调用内核操作这些数据。
3:cudaMemcpy把数据抓回host。
4:在host上使用这些数据。

这四步之间,哪些地方必须要cudaDeviceSynchronize()才能保证程序的正确性?或者都不用?
...全文
2202 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuliufen 2012-12-14
  • 打赏
  • 举报
回复
貌似都不用,如果涉及到多个内核函数运行的时候就需要了,内核函数中各个线程在运行的时候不是同步的,所以在计算完成的时候一般需要同步一下;
cc19851 2012-10-15
  • 打赏
  • 举报
回复
cudaDeviceSynchronize 是老版本的 cudaThreadSynchronize 吧,
如果是的话就不需要显示调用cudaDeviceSynchronize
cudaMemcpy 会隐式同步

580

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧