这本书引用:
在CUDA中,
__syncthreads()
语句(如果存在)必须由块中的所有线程执行。当__syncthreads()
放在if
语句中时,块中的所有线程都会执行包含__syncthreads()
的路径,或者不执行任何线程。对于if-then-else
语句,如果每个路径都有__syncthreads()
语句,则块中的所有线程都会执行__syncthreads()
路径上的then
,或者所有线程都执行else
1}}路径。两个__syncthreads()
是不同的屏障同步点。如果块中的线程执行then
路径而另一个线程执行else
路径,则它们将在不同的屏障同步点处等待。他们最终会永远等待对方。程序员有责任编写代码以满足这些要求。
没有给出if
和if-else-then
个案的例子,所以我无法理解这个概念。请用简单的话解释我的情况。
PS:我是并行编程和CUDA的初学者。
提前致谢。