共享内存上的原子操作是按增加线程数的顺序执行的吗?

时间:2012-09-23 17:59:38

标签: cuda atomic gpgpu

我可以确定在这个例子中,将按线程的数字顺序执行原子操作吗? 或者如何以不同方式进行,不包括仅使用一个线程?

__shared__ unsigned int cnt[MAXLEN], s[MAXLEN];

#pragma unroll
for (int i = 0; i < MAXLEN; i+= blockDim.x) 
   p[atomicSub(cnt + s[threadIdx.x + i], 1) - 1] = threadIdx.x + i;
__syncthreads();

1 个答案:

答案 0 :(得分:3)

如果按线程的数字顺序,你的意思是线程ID号,或线程的启动顺序,答案是否定的。这些因素在线程中的事件排序中起着 no 可靠部分的作用。