インテル® C++ コンパイラー 15.0 ユーザー・リファレンス・ガイド

omp ordered

ループの反復順に実行されるワークシェア・ループのコードブロックを指定します。

構文

#pragma omp ordered

structured-block

引数

なし。

説明

一度に 1 つのスレッドだけが ordered セクションに入ることができます。スレッドは、ループの反復順に入ることができます。以前の反復がすべて完了していること、または以前の反復がすべて ordered セクションを実行しないことが保証されるまで、スレッドは ordered セクションに入ることができません。これにより、ordered セクション内のコードはシーケンシャル化し、順序を設定して、セクション外のコードは並列に実行できるようにします。

次の例は、このプラグマを使用して、各スレッドで変数 intermediate のプライベート値を計算し、それらを for ループのシリアルバージョンと同じ順序で running_calc に合計する方法を示します。 操作の順序を維持することで、浮動小数点結果がシリアルバージョンと同じになることを保証できます。

#include <omp.h>
float running_calc = 0.0;
float intermediate;
#pragma omp parallel for ordered private(intermediate) {
 	for (i=0; i<N; i++) {
	  	// compute private “intermediate” value
  		#pragma omp ordered { running_calc = intermediate + running_calc; }
	 }
}

このヘルプトピックについてのフィードバックを送信