<分区>
问题很简单, block 中的某些线程到达 __syncthreads()
而其中一些不到达是否重要?采取以下代码。
for (unsigned int s=blockDim.x/2; s>0; s>>=1) {
if (tid < s) {
sdata[tid] += sdata[tid + s];
} else {
break;
}
__syncthreads();
}
它会造成一些僵局或其他问题吗?我应该在 for 之后加上 __syncthreads()
还是这样好?