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

omp parallel

スレッドのチームにより並列に実行される構造ブロックを指定します。

構文

#pragma omp parallel [clause, clause, ...]

structured-block

引数

clause

次の 1 つまたは複数の clause を指定できます。

  • copyin(list)

  • default(shared | none)

  • firstprivate(list)

  • if(scalar-expression)

  • num_threads(integer expression)

  • private(list)

  • proc_bind(clause)

    clause は次のいずれかです。

    定義

    master

    チーム内のすべてのスレッドをマスタースレッドと同じ場所に割り当てます。

    close

    スレッドを親スレッドの場所に近いところに割り当てます。

    spread

    スレッドのチームに対し、親の場所のスパース割り当てを行います。

  • reduction(operator:list)

  • shared(list)

説明

このプラグマに到達したスレッドは、構造ブロックを実行するスレッドのチームを構築します。このプラグマに到達したスレッドは、スレッド番号 0 のマスタースレッドになります。残りのスレッドは、1 ~(N-1) の範囲の一意の番号を割り当てられます。N は、チーム内のスレッドの数です。チーム内のスレッドの数は構造ブロックの継続期間中、一定です。

次の例は、このプラグマを使用して、それぞれ startend、および tag 変数のプライベート・コピーを持つ N スレッドのチームを作成する方法を示します。各 tag 変数は、そのスレッドの tag の値で初期化されます。各スレッドはコードを実行し、それぞれの開始時間と合計時間を計算して、共有配列 timing に記録します。

#include <omp.h>
void compute(int tag) {
	double timing[n], start, end;

	#pragma omp parallel private(start, end) firstprivate(tag) num_threads(n)	{
    start = omp_get_wtime();
		  // some parallel computation using “tag”
		  end = omp_get_wtime();
		  timing[omp_get_thread_num()] = end – start;
	}
}

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