2011-07-01 13 views
1

この機能の機能は何ですか?私はOpenCL仕様のものを理解できませんでした! 以下のコードは、spMVコードのスニペットです。OpenCL - atomic_cmpxchg

atomic_cmpxchg((__global int*)loc, *((int*)&old), *((int*)&sum)) != *((int*)&old) 

答えて

4

atomic_cmpxchgは "アトミック比較と交換"です。これは、標準C99三項演算のアトミック版を実装しています。 pを返すatomic_cmpxchg呼び出しで

p = *loc; 
*loc = (p == *old) ? (*sum != *old) : p; 

:それは上記のコードは、原子以下の同等物を意味するため。操作はアトミックです。つまり、トランザクションが完了するまで他のスレッドがlocから読み書きすることはできません。