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