<html> <body> <script src=tf.min.js></script> <script> // // tf3pi.html // Neil Gershenfeld 11/18/18 // Ann Yuan 11/30/18 // TensorFlow.js pi calculation benchmark // pi = 3.14159265358979323846 // const points = 1e7 const a = tf.scalar(0.5) const b = tf.scalar(0.75) const c = tf.scalar(0.25) const batchSize = 100; const computeSum = []; for(let i=1; i<batchSize; i++) { computeSum.push(`compute(i * ${batchSize}. + ${i}.)`); } const divMulIndexSubProgram = { variableNames: ['a', 'b', 'c'], outputShape: [points / batchSize], userCode: ` float compute(float i) { return a / ((i - b) * (i - c)); } void main() { float i = float(getOutputCoords()); setOutput(${computeSum.join(' + ')}); } ` } function divMulIndexSub(a, b, c) { return tf.ENV.backend.compileAndRun(divMulIndexSubProgram, [a, b, c]); } function f() { return tf.sum(divMulIndexSub(a, b, c)).dataSync(); } // Warmup f() const tstart = performance.now()/1000 //const sum = tf.range(1,points) const sum = f() //const sum = f(); const tend = performance.now()/1000 const mflops = points*5.0*1e-6/(tend-tstart); document.write('pi: '+sum.toString()) document.write('<br>') document.write('time: '+(tend-tstart)+'s') document.write('<br>') document.write('estimated MFlops: '+mflops) </script>