cudaStreamSynchronize vs CudaDeviceSynchronize vs cudaThreadSynchronize
这三个功能之间有什么区别,尤其是最后两个?图书馆手册上说 请注意,此函数已弃用,因为其名称不正确 反映其行为。其功能类似于 应使用的未弃用函数cudaDeviceSynchronize() 相反 但不太清楚这意味着什么。这些都是障碍。屏障阻止代码执行超出屏障,直到满足某些条件cudaStreamSynchronize vs CudaDeviceSynchronize vs cudaThreadSynchronize,cuda,Cuda,这三个功能之间有什么区别,尤其是最后两个?图书馆手册上说 请注意,此函数已弃用,因为其名称不正确 反映其行为。其功能类似于 应使用的未弃用函数cudaDeviceSynchronize() 相反 但不太清楚这意味着什么。这些都是障碍。屏障阻止代码执行超出屏障,直到满足某些条件 停止CPU/主机线程(cudaDeviceSynchronize在其中发出)中的执行,直到GPU完成所有先前请求的cuda任务(内核、数据副本等)的处理 正如您所发现的,只是cudaDeviceSynchronize的一个
cudaDeviceSynchronize
的一个弃用版本。弃用只是意味着它现在仍然有效,但建议不要使用它(改用CudDeviceSynchronize),将来可能会变得不受支持。但是cudaThreadSynchronize
()和cudaDeviceSynchronize
()是相似的cudaStreamSynchronize
()将流id作为其唯一参数。当CPU代码执行继续超出此界限时,在其他流中发布的cuda任务可能会完成,也可能不会完成Cuda文档(如问题中所引用)声明其功能类似。他们不说相同,只说相似,那么你怎么知道他们是相同的呢?你能举出任何来源吗?我把“基本相同”改为“相似”。重要的一点是,它已被弃用,文档建议改用
cudaDeviceSynchronize()
。谢谢,当从弃用名称改为新名称时,最好知道它们之间的区别,或者文档编写者是否只是害怕采取一种立场,即它们是相同的,而不是具有不同的函数名。