インテル® C++ コンパイラー 14.0 ユーザー・リファレンス・ガイド
スレッドのチームにより並列に実行される構造ブロックを指定します。
この宣言子に到達したスレッドは、構造ブロックを実行するスレッドのチームを構築します。このプラグマに到達したスレッドは、スレッド番号 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;
}
}