Amazing:
gpu.js
is a JavaScript library for GPGPU (General purpose computing on GPUs) in the browser.gpu.js
will automatically compile specially written JavaScript functions into shader language and run them on the GPU using the WebGL API. In case WebGL is not available, the functions will still run in regular JavaScript.
Only a subset of legal JavaScript syntax – mainly calcuations stuff – will run on the GPU.
const gpu = new GPU();
// Create the GPU accelerated function from a kernel
// function that computes a single element in the
// 512 x 512 matrix (2D array). The kernel function
// is run in a parallel manner in the GPU resulting
// in very fast computations! (...sometimes)
const matMult = gpu.createKernel(function(a, b) {
var sum = 0;
for (var i = 0; i < 512; i++) {
sum += a[this.thread.y][i] * b[i][this.thread.x];
}
return sum;
}).setDimensions([512, 512]);
// Perform matrix multiplication on 2 matrices of size 512 x 512
const c = matMult(a, b);
When running the benchmark, my GPU runs things about 4.5 times faster.