From 721dfd48af6a407b521a9151e1cf8455b0baf250 Mon Sep 17 00:00:00 2001
From: Neil Gershenfeld <gersh@cba.mit.edu>
Date: Sat, 8 Dec 2018 09:06:40 -0500
Subject: [PATCH] wip

---
 Node/clusterpi.js | 44 +++++++++++++++++---------------------------
 Node/forkpi.js    |  4 ++--
 Node/forkspi.js   |  2 +-
 Node/pi.js        |  2 +-
 README.md         |  4 +++-
 5 files changed, 24 insertions(+), 32 deletions(-)

diff --git a/Node/clusterpi.js b/Node/clusterpi.js
index 194c57d..0b3988f 100644
--- a/Node/clusterpi.js
+++ b/Node/clusterpi.js
@@ -1,25 +1,22 @@
 //
 // clusterpi.js
-// Neil Gershenfeld 11/23/18
+// Neil Gershenfeld 12/8/18
 // pi calculation benchmark
 // pi = 3.14159265358979323846
 //
 const cluster = require('cluster')
-const points = 1e8
 if (cluster.isMaster) 
    master()
 else
    child()
 function master() {
-   var processes = require('os').cpus().length
-   var tstart = Date.now()/1000
-   for (var i = 0; i < processes; i++)
-      cluster.fork()
-   var index = 0
+   var processes = parseInt(process.argv[2])
+   var points = 1e9
    var pi = 0
    var results = 0
-   for (const id in cluster.workers) {
-      var worker = cluster.workers[id]
+   var tstart = Date.now()/1000
+   for (var i = 0; i < processes; i++) {
+      var worker = cluster.fork({index:i,points:points})
       worker.on('message',(result) => {
          pi += result
          results += 1
@@ -33,25 +30,18 @@ function master() {
             process.exit()
             }
          })
-      function send(index) {
-         return function() {
-            worker.send(index)
-            }
-         }
-      worker.on('online',send(index))
-      index += 1
       }
    }
 function child() { 
-   process.on('message',(index) => {
-      var a = 0.5
-      var b = 0.75
-      var c = 0.25
-      var sum = 0
-      var start = 1+points*index
-      var end = points*(index+1)
-      for (var i = start; i <= end; ++i)
-         sum += a/((i-b)*(i-c))
-      process.send(sum)
-      })
+   var index = parseInt(process.env.index)
+   var points = parseInt(process.env.points)
+   var a = 0.5
+   var b = 0.75
+   var c = 0.25
+   var sum = 0
+   var start = 1+points*index
+   var end = points*(index+1)
+   for (var i = start; i <= end; ++i)
+      sum += a/((i-b)*(i-c))
+   process.send(sum)
    }
diff --git a/Node/forkpi.js b/Node/forkpi.js
index f3901a6..9c17a80 100644
--- a/Node/forkpi.js
+++ b/Node/forkpi.js
@@ -11,8 +11,8 @@ var pi = 0
 var results = 0
 var tstart = Date.now()/1000
 for (let i = 0; i < processes; ++i) {
-   id = fork('forkspi.js',[i,points])
-   id.on('message',(result) => {
+   const child = fork('forkspi.js',[i,points])
+   child.on('message',(result) => {
    pi += result
    results += 1
       if (results == processes) {
diff --git a/Node/forkspi.js b/Node/forkspi.js
index 8582cd7..101ab4d 100644
--- a/Node/forkspi.js
+++ b/Node/forkspi.js
@@ -1,6 +1,6 @@
 //
 // forkspi.js
-// Neil Gershenfeld 11/23/18
+// Neil Gershenfeld 12/8/18
 // pi calculation benchmark
 // pi = 3.14159265358979323846
 //
diff --git a/Node/pi.js b/Node/pi.js
index 3fa5fae..57c2b51 100644
--- a/Node/pi.js
+++ b/Node/pi.js
@@ -4,7 +4,7 @@
 // pi calculation benchmark
 // pi = 3.14159265358979323846
 //
-var points = 1e8
+var points = 1e9
 var a = 0.5
 var b = 0.75
 var c = 0.25
diff --git a/README.md b/README.md
index ff66b56..6e51170 100644
--- a/README.md
+++ b/README.md
@@ -6,10 +6,12 @@
 |71.46|[pi.html](https://pub.pages.cba.mit.edu/pi/JavaScript/pi.html)|JavaScript, 56 workers|Intel 2x E5-2680|Nov 19, 2018|
 |46.96|[mpipi.c](MPI/mpipi.c)|C, MPI<br>mpicc mpipi.c -o mpipi -O3 -ffast-math <br> mpirun -np 6 mpipi|Intel i7-8700T|Nov 17, 2018|
 |16.16|[pi.html](https://pub.pages.cba.mit.edu/pi/JavaScript/pi.html)|JavaScript, 6 workers|Intel i7-8700T|Nov 17, 2018|
+|14.34|[clusterpi.js](Node/clusterpi.js)|Node, 6 workers|Intel i7-8700T|Dec 8, 2018|
 |9.371|[pi.c](C/pi.c)|C<br>gcc pi.c -o pi -lm -O3 -ffast-math|Intel i7-8700T|Nov 17, 2018|
+|3.817|[pi.js](Node/pi.js)|Node|Intel 2x E5-2680|Nov 24, 2018|
 |3.734|[pi.html](https://pub.pages.cba.mit.edu/pi/JavaScript/pi.html)|JavaScript, 1 worker|Intel i7-8700T|Nov 17, 2018|
 |3.472|[pi.html](https://pub.pages.cba.mit.edu/pi/JavaScript/pi.html)|JavaScript, 1 worker|Intel 2x E5-2680|Nov 19, 2018|
-|3.817|[pi.js](Node/pi.js)|Node|Intel 2x E5-2680|Nov 24, 2018|
+|3.184|[clusterpi.js](Node/clusterpi.js)|Node, 1 worker|Intel i7-8700T|Dec 8, 2018|
 |0.573|[pi.c](C/pi.c)|C<br>gcc pi.c -o pi -lm|Intel i7-8700T|Nov 17, 2018|
 |0.470|[numpi.py](Python/numpi.py)|Python, NumPy|Intel i7-8700T|Nov 17, 2018|
 |0.029|[pi.py](Python/pi.py)|Python|Intel i7-8700T|Nov 17, 2018|
-- 
GitLab