diff --git a/OpenMP/mppi.c b/OpenMP/mppi.c new file mode 100644 index 0000000000000000000000000000000000000000..430f23c0a6e451f04b002a88adf8cb1f3c1ee058 --- /dev/null +++ b/OpenMP/mppi.c @@ -0,0 +1,36 @@ +/* +* mppi.c +* Neil Gershenfeld 6/21/19 +* OpenMPI pi calculation benchmark +* pi = 3.14159265358979323846 +*/ + +#include <stdio.h> +#include <time.h> +#include <omp.h> + +#define NPTS 1000000000 + +double pi; + +void main() { + int i; + printf("%d\n",omp_get_max_threads()); + double a,b,c,dt,mflops; + struct timespec tstart,tend; + clock_gettime(CLOCK_REALTIME,&tstart); + a = 0.5; + b = 0.75; + c = 0.25; + pi = 0; + pi = 0; + #pragma omp parallel + #pragma omp for reduction(+:pi) + for (i = 1; i <= NPTS; ++i) + pi += a/((i-b)*(i-c)); + clock_gettime(CLOCK_REALTIME,&tend); + dt = (tend.tv_sec+tend.tv_nsec/1e9)-(tstart.tv_sec+tstart.tv_nsec/1e9); + mflops = NPTS*5.0/(dt*1e6); + printf("NPTS = %d, pi = %f\n",NPTS,pi); + printf("time = %f, estimated MFlops = %f\n",dt,mflops); + }