#pargma omp parallel for erfordert, dass die Schleifenvariable eine ganze Zahl ist. Was passiert also, wenn die Schleifenvariable keine Ganzzahl ist, wie in diesem Beispiel?OpenMP: Was passiert, wenn die Schleifenvariable keine Ganzzahl ist, wie in diesem Beispiel?
#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);
}
Wie konvertiert man dieses Programm in ein OpenMP? Danke
Warum sind Sie Slice für den Schleifenzähler anstatt Partitionen? –
Eigentlich beginne ich gerade openMP zu lernen und ich fand diese Frage eine Herausforderung für mich, wenn Sie den obigen seriellen Code ausführen, wird es richtig laufen, um die Integration mit der Funktion f (x) = sin (x/2) +1 zwischen Pi zu berechnen/2 und 2 Pi, – Ahmed
so ist das Problem "#pragma omp parallel für" erfordert Integer-Loop-Variable .. was, wenn nicht ganzzahlig? – Ahmed