无法理解__syncthreads()

时间:2013-12-16 14:37:52

标签: c cuda parallel-processing nvidia

这本书引用:

  

在CUDA中,__syncthreads()语句(如果存在)必须由块中的所有线程执行。当__syncthreads()放在if语句中时,块中的所有线程都会执行包含__syncthreads()的路径,或者不执行任何线程。对于if-then-else语句,如果每个路径都有__syncthreads()语句,则块中的所有线程都会执行__syncthreads()路径上的then,或者所有线程都执行else 1}}路径。两个__syncthreads()是不同的屏障同步点。如果块中的线程执行then路径而另一个线程执行else路径,则它们将在不同的屏障同步点处等待。他们最终会永远等待对方。程序员有责任编写代码以满足这些要求。

没有给出ifif-else-then个案的例子,所以我无法理解这个概念。请用简单的话解释我的情况。

PS:我是并行编程和CUDA的初学者。

提前致谢。

0 个答案:

没有答案