1
この機能の機能は何ですか?私はOpenCL仕様のものを理解できませんでした! 以下のコードは、spMVコードのスニペットです。OpenCL - atomic_cmpxchg
atomic_cmpxchg((__global int*)loc, *((int*)&old), *((int*)&sum)) != *((int*)&old)
この機能の機能は何ですか?私はOpenCL仕様のものを理解できませんでした! 以下のコードは、spMVコードのスニペットです。OpenCL - atomic_cmpxchg
atomic_cmpxchg((__global int*)loc, *((int*)&old), *((int*)&sum)) != *((int*)&old)
atomic_cmpxchg
は "アトミック比較と交換"です。これは、標準C99三項演算のアトミック版を実装しています。 p
を返すatomic_cmpxchg
呼び出しで
p = *loc;
*loc = (p == *old) ? (*sum != *old) : p;
:それは上記のコードは、原子以下の同等物を意味するため。操作はアトミックです。つまり、トランザクションが完了するまで他のスレッドがloc
から読み書きすることはできません。