【发布时间】:2014-01-03 23:50:54
【问题描述】:
书名:
在 CUDA 中,如果存在
__syncthreads()语句,则必须由块中的所有线程执行。当__syncthreads()放在if语句中时,块中的所有线程都执行包含__syncthreads()的路径,或者它们都不执行。对于if-then-else语句,如果每个路径都有一个__syncthreads()statement,则块中的所有线程都在then路径上执行__syncthreads(),或者所有线程都执行elsepath。两个__syncthreads()是不同的屏障同步点。如果块中的一个线程执行then路径,另一个执行else路径,它们将在不同的屏障同步点等待。他们最终会永远等待对方。编写代码以满足这些要求是程序员的责任。
没有给出if和if-else-then案例的例子,所以我无法理解这个概念。请用简单的话解释一下这两种情况。
PS:我是并行编程和 CUDA 的初学者。
提前致谢。
【问题讨论】:
标签: c cuda parallel-processing nvidia