与えられた数値のセットの最大値を見つけるために、CUDAでコードを書き込もうとしています。
20個の番号があり、カーネルが5スレッドの2ブロックで実行されていると仮定します。ここで、10個のスレッドが最初の10個の値を同時に比較し、スレッド2が最大値を検出すると、スレッド2はグローバルメモリの最大値変数を更新するとします。スレッド2が更新されている間、古い値を使用して比較する残りのスレッド(1,3-10)はどうなりますか?
atomcas()を使用してグローバル変数をロックした場合、スレッド(1,3-10)は古い最大値を使用して比較しますか?どうすればこの問題を克服できますか?