2

共有メモリでアトミック操作を行うにはどうすればよいですか?
私はこれに似たものを持っています:

__shared__ int a[10];
//set a
if(tid<5)
  a[2]++;

したがって、5 つのスレッドが増加しています。これどうやってするの?
この方法で 5 つのスレッドの実行をシリアル化していることはわかっていますが、ワープにどのような影響がありますか? ワープ内のすべてのスレッドがシリアル化されますか、それとも最初の 5 つだけですか?

4

1 に答える 1

4

a[2]++ を次のように置き換えます

atomicAdd( + 2, 1 );

unsigned を作成できる場合は、代わりに atomicInc() を使用することをお勧めしますが、どちらもパフォーマンスを低下させます。

于 2011-04-22T14:07:18.987 に答える