Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
-O2 最適化フラグによってコードが再配置され、マルチスレッド アプリケーションが意図しない動作をする可能性はありますか?
un-intended behaviorコードが再配置される場合の例として、各スレッドに対して (プログラマーによって) 作成されると宣言された変数が、すべてのスレッドによって共有される1つの#pragma omp parallalコピーのみが作成されるように、外部に移動されます。
un-intended behavior
#pragma omp parallal
いいえ、これは起こり得ません。コンパイラがループをアンロールしていた場合、またはコンパイラがループを並べ替えたときにプログラムがクラッシュした場合、OpenMP はあまり役に立ちません。OpenMP ディレクティブは、変数と並列スコープの依存関係と副作用を指定する必要があり、コンパイラは最適化パスを適用するときにそれらを考慮します。