Newer
Older
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Neil Gershenfeld 11/18/18
// Nikhil Thorat 11/20/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 indexSubProgram = {
variableNames: ['X'],
outputShape: [points],
userCode: `
void main() {
float x = getX();
int i = getOutputCoords();
float value = float(i) - x;
setOutput(value);
}
`
}
function indexSub(x) {
return tf.ENV.backend.compileAndRun(indexSubProgram, [x]);
}
function f(index) {
// const index = tf.range(1,points)
return tf.sum(tf.div(a,tf.mul(indexSub(b),indexSub(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>