共享内存上的原子操作

时间:2011-04-22 13:36:56

标签: c cuda gpu-atomics

如何在共享内存上进行原子操作? 我有类似的东西:

__shared__ int a[10];
//set a
if(tid<5)
  a[2]++;
因此,5个线程正在递增a。我怎么能这样做? 我知道,通过这种方式,我正在序列化5个线程的执行,但这是如何影响warp的呢?将warp中的所有线程序列化还是只是前5个?

1 个答案:

答案 0 :(得分:4)

替换[2] ++
atomicAdd( a + 2, 1 );

如果你可以使用unsigned,你可能更喜欢使用atomicInc(),但任何一个都会破坏性能。

相关问题