关于同步位置的问题

我看书上说一般要避免在分支里面同步,这样容易形成死锁。但是很多例子里面都有这样的代码:
global kernel_test1()
{
int id = threadIdx.x;if (id < N)
{ do something… __syncthreads(); do something…
}
}

这样写会不会死锁呢?

不会!

因为__syncthreads()只针对存活的线程的。这种代码,大于等于N的线程会死掉,而死掉的线程默认算成参与了同步了。

故不会有任何问题。