Skip to content
Snippets Groups Projects
Select Git revision
  • 50c282df24c87db086c278e279dbd2d5af2090f1
  • master default protected
2 results

wasmpi.html

Blame
  • wasmpi.html 2.96 KiB
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title>Rust WebAssembly pi benchmark</title>
    </head>
    <body>
    
    <script type="module">
    //
    // wasmpi.html
    // Neil Gershenfeld 12/26/24
    // Rust WebAssembly pi calculation benchmark
    // pi = 3.14159265358979323846
    //
    
    import init,* as wasm from "./dist/wasmpi.js";
    await init();
    
    window.js_serial = function() {
       var points = parseInt(document.getElementById('js_serial_points').value)
       var a = 0.5
       var b = 0.75
       var c = 0.25
       var pi = 0
       var tstart = Date.now()/1000
       for (var i = 1; i <= points; ++i)
          pi += a/((i-b)*(i-c))
       var tend = Date.now()/1000
       var mflops = points*5.0*1e-6/(tend-tstart)
       document.getElementById('div_js_pi_serial').innerHTML = 'pi: '+pi
       document.getElementById('div_js_time_serial').innerHTML = 'time: '+(tend-tstart).toFixed(1)+'s'
       document.getElementById('div_js_flop_serial').innerHTML = 'estimated MFlops: '+mflops.toFixed(1)
       }
    
    window.rust_serial = function() {
       var points = parseInt(document.getElementById('rust_serial_points').value)
       var tstart = Date.now()/1000
       var pi = wasm.rust_serial_pi(points)
       var tend = Date.now()/1000
       var mflops = points*5.0*1e-6/(tend-tstart)
       document.getElementById('div_rust_pi_serial').innerHTML = 'pi: '+pi
       document.getElementById('div_rust_time_serial').innerHTML = 'time: '+(tend-tstart).toFixed(1)+'s'
       document.getElementById('div_rust_flop_serial').innerHTML = 'estimated MFlops: '+mflops.toFixed(1)
       }
    
    window.rust_serial_map = function() {
       var points = parseInt(document.getElementById('rust_serial_map_points').value)
       var tstart = Date.now()/1000
       var pi = wasm.rust_serial_map_pi(points)
       var tend = Date.now()/1000
       var mflops = points*5.0*1e-6/(tend-tstart)
       document.getElementById('div_rust_pi_serial_map').innerHTML = 'pi: '+pi
       document.getElementById('div_rust_time_serial_map').innerHTML = 'time: '+(tend-tstart).toFixed(1)+'s'
       document.getElementById('div_rust_flop_serial_map').innerHTML = 'estimated MFlops: '+mflops.toFixed(1)
       }
    
    </script>
    </head>
    <body>
    
    <button onclick='js_serial()'>JavaScript calculate pi serial</button><br>
    number of points: <input type='text' id='js_serial_points' value='1000000000' size=10>
    <div id='div_js_pi_serial'>pi:</div>
    <div id='div_js_time_serial'>time:</div>
    <div id='div_js_flop_serial'>estimated MFlops:</div>
    
    <br>
    
    <button onclick='rust_serial()'>Rust WebAssembly calculate pi serial</button><br>
    number of points: <input type='text' id='rust_serial_points' value='1000000000' size=10>
    <div id='div_rust_pi_serial'>pi:</div>
    <div id='div_rust_time_serial'>time:</div>
    <div id='div_rust_flop_serial'>estimated MFlops:</div>
    
    <br>
    
    <button onclick='rust_serial_map()'>Rust WebAssembly calculate pi map</button><br>
    number of points: <input type='text' id='rust_serial_map_points' value='1000000000' size=10>
    <div id='div_rust_pi_serial_map'>pi:</div>
    <div id='div_rust_time_serial_map'>time:</div>
    <div id='div_rust_flop_serial_map'>estimated MFlops:</div>
    
    </body>
    </html>