diff --git a/MPI/mpipi3.c b/MPI/mpipi3.c index 9acbcffa6b133eec0385abeace94fec778586c27..3e505e83b410d673f21070faf4790baada0b9023 100755 --- a/MPI/mpipi3.c +++ b/MPI/mpipi3.c @@ -10,8 +10,7 @@ #include <sys/time.h> #include <stdint.h> -//#define NPTS 10000000000 -#define NPTS 1000000000 +#define NPTS 10000000000 #define NLOOP 10 void main(int argc, char** argv) { @@ -19,7 +18,6 @@ void main(int argc, char** argv) { uint64_t i,j,istart,iend,init_time,start_time,end_time; struct timeval init,start,end; double sum,pi,mflops,max; - gettimeofday(&init,NULL); MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&rank); diff --git a/OpenMP/mppi2.c b/OpenMP/mppi2.c new file mode 100644 index 0000000000000000000000000000000000000000..5c4b0dbb1a6e242c09fabbe3aa072d18f810441c --- /dev/null +++ b/OpenMP/mppi2.c @@ -0,0 +1,38 @@ +/* +* mppi.c +* Neil Gershenfeld 6/21/19 +* OpenMP pi calculation benchmark, with multiple iterations +* pi = 3.14159265358979323846 +*/ + +#include <stdio.h> +#include <time.h> +#include <omp.h> +#include <stdint.h> + +#define NPTS 1000000000 +#define NLOOP 10 + +void main() { + uint64_t i; + int j; + double a,b,c,pi,dt,mflops,max; + struct timespec tstart,tend; + a = 0.5; + b = 0.75; + c = 0.25; + max = 0; + for (j = 0; j < NLOOP; ++j) { + pi = 0; + clock_gettime(CLOCK_REALTIME,&tstart); + #pragma omp parallel 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 = %ld, pi = %f, threads = %d\n",NPTS,pi,omp_get_max_threads()); + if (mflops > max) max = mflops; + printf("time = %f, estimated MFlops = %f, max = %f\n",dt,mflops,max); + } + }