Skip to content
Snippets Groups Projects
Select Git revision
  • 1538bdebe0a7015120c2047a99bda333c45d898e
  • master default protected
2 results

index.html

Blame
  • tf3pi.html 1.28 KiB
    <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>