<< 26 >>
インテル® C/C++ コンパイラー OpenMP* 活用ガイド
デュアルコア・マルチコア対応アプリケーション開発A
reduction 宣言句は通常、次のようなワークシェアリング構文で使用されることを意図しています。(最初に示した p
の計算プログラムをもう一度示します)
#include <omp.h>
static long num_steps = 100000;
double step;
void main ()
{
int i;
double x, pi, sum = 0.0;
step = 1.0/(double) num_steps;
#pragma omp parallel for reduction(+:sum) private(x)
for (i=1;i<= num_steps; i++){
x = (i-0.5)*step;
sum = sum + 4.0/(1.0+x*x);
}
pi = step * sum;
}
次のテーブルは、リダクションに指定可能な演算子および組み込み関数の一覧とその初期値を示しています。
表.5 reduction 演算
同じ種類の reduction 宣言句には複数の変数を記述できます。異なった種類の reduction 宣言句を指定する場合は、
以下のように記述します。
#pragma omp for reduction (+:a,y) reduction (.or.:am)
演算子
初期値
+
*
-
.and.
0
1
0
全て1
演算子
初期値
.or.
max
min
//
0
1
0
全て1