From c5da1b6e1a49744667834772e8143e9a6a455e6c Mon Sep 17 00:00:00 2001 From: Neil Gershenfeld <gersh@cba.mit.edu> Date: Thu, 11 Jul 2019 21:58:29 -0400 Subject: [PATCH] wip --- MPI/mpipi3.c | 4 +--- OpenMP/mppi2.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 OpenMP/mppi2.c diff --git a/MPI/mpipi3.c b/MPI/mpipi3.c index 9acbcff..3e505e8 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 0000000..5c4b0db --- /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); + } + } -- GitLab