首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cudaStreamSynchronize vs CudaDeviceSynchronize vs cudaThreadSynchronize

cudaStreamSynchronize vs CudaDeviceSynchronize vs cudaThreadSynchronize
EN

Stack Overflow用户
提问于 2012-11-21 09:27:03
回答 1查看 21.3K关注 0票数 29

这三个函数,特别是后两个函数的区别是什么?图书馆手册上说

请注意,此函数已弃用,因为它的名称不能反映其行为。它的功能类似于不推荐使用的函数cudaDeviceSynchronize(),应该改用它。

但不太确定这是什么意思。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-21 11:28:20

这些都是障碍。障碍阻止代码执行超出障碍,直到满足某些条件。

  1. cudaDeviceSynchronize()会暂停在CPU/主机线程(发出CPU)中的执行,直到GPU完成之前请求的所有cuda任务(内核、数据副本、etc.)
  2. cudaThreadSynchronize() ),正如您已经发现的,它只是cudaDeviceSynchronize的弃用版本。弃用只是意味着它现在仍然有效,但建议不要使用它(使用cudaDeviceSynchronize ),将来可能会变得不受支持。但是similar.
  3. cudaStreamSynchronize() ()和cudaThreadSynchronize()是类似于上述两个函数的,但它阻止在cudaDeviceSynchronize主机线程中进一步执行,直到GPU完成处理在引用流中发出的所有先前请求的cuda任务。所以cudaStreamSynchronize()只接受一个流id作为它的参数。当CPU代码执行超过此障碍时,其他流中发出的cuda任务可能会完成,也可能不会完成。
票数 52
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13485018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档