diff --git a/Node/clusterpi.js b/Node/clusterpi.js index 194c57d29220ec4ca749df9a58bdf70209bff766..0b3988fcd4048edca56b0ea96e55e98767bbea84 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 f3901a6f6f77ea70737b4519bd401aad4ffd70df..9c17a80e93d7380639870567d15a6db4f38589c9 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 8582cd789789806ebb701542b720556d59bc8c50..101ab4dbac843d399e8cbcd35f58c51f2855c86f 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 3fa5fae49b304fb55799e519af921c2316689988..57c2b51a4bdc601b68943fccde2f0e00d0c2e7f6 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 ff66b56217b6a60d4a36b70ef09e751830dfab1d..6e511702431a0741e01142b3f65a0f6eb17aaff5 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|