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

omp parallel

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

構文

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

structured-block

引数

clause

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

  • 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 は、チーム内のスレッドの数です。チーム内のスレッドの数は構造ブロックの継続期間中、一定です。

例

次の例は、このプラグマを使用して、それぞれ start、end、および 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();

		  // “tag” を使用する並列計算

		  end = omp_get_wtime();

		  timing[omp_get_thread_num()] = end – start;

	}

}

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