#pragma omp parallel forには、ループ変数が整数であることが必要です。ループ変数がこの例のように整数でない場合はどうなりますか?OpenMP:ループ変数がこの例のように整数でないとどうなりますか?
#include <stdio.h>
#include <math.h>
#define START (M_PI/2)
#define END (M_PI*2)
double f(double x)
{ return sin(x/2)+1;
}
int main(int argc, char *argv[])
{ double total = 0, x;
int partitions;
double slice;
printf("How many partitions? "); fflush(stdout);
scanf("%d", &partitions);
slice = (END-START)/partitions;
for (x = START + (slice/2); x < END; x = x + slice)
total = total + f(x);
total = total * slice;
printf("The integration is %1.20f\n", total);
}
このプログラムをOpenMPに変換するにはどうすればよいですか? ありがとう
なぜあなたではなく、パーティションよりもループカウンタ用のスライスを使用していますか? –
実際に私はopenMPの学習を始めました。上記のシリアルコードを実行すると、関数f(x)= sin(x/2)+1を使って積分を計算するために正しく実行されます。/2と2 Pi、 – Ahmed
です。問題は "#pragma omp parallel for"には整数ループ変数が必要です。 – Ahmed