2012-03-20 16 views
4

cc-NUMAのアーキテクチャと変数をフラッシュする必要性について迷っているものがあります。 2つのスレッドが同じキャッシュラインを変更した場合、「誤った共有」状態が発生し、キャッシュラインが再びリロードされることがあります。 なぜスレッド交換情報を作るために変数をフラッシュする必要があるのですか? はシリアル地域であなたが宣言することとしますomp flushとcc-NUMAのアーキテクチャ

int flag=0; 

そして、並列領域でスレッド0は共有変数を割り当てます。

flag=1; 

は1スレッドになります。

while (!flag){} 

ループ今までに終了しますフラッシュせずに?私たちがcc-NUMAアーキテクチャを採用しているのであれば、それはなぜですか?

+1

論理的に言えば、cc-NUMAは、他の共有メモリのマルチコアマシンと変わらない点です。そのキャッシュの一貫性は少し(または多く)遅くなるかもしれませんが、行動的には同じです。 – Mysticial

答えて

1

コンパイラは、CPUだけでなく、上記のコードを中断させる最適化も実行できることを忘れないでください。

したがって、キャッシュ一貫性のハードウェアサポートに関係なく、フラッシュはまだ必要です。