GPUは単純な計算処理などを行うのに適しています。アニメーションのような処理も得意です。最近ではAIのモデル作成などにGPUが注目されていますが、CSS3アニメーションなどWebブラウザでも利用できる場面が数多くあります。 今回紹介するgpu.jsはそんなGPUによる計算処理を手軽に実現できるようにするJavaScriptライブラリです。

gpu.jsの使い方

gpu.jsを使ったコードは次のようになります。

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);

この処理をgpu.jsで行ったところです。

CPUとの比較で約5.5倍GPUのが高速となっています。特に単純な計算処理においてGPUのが高速というのが分かります。このように向き不向きはありますが、gpu.jsを使うことでJavaScript全体の処理を高速化できる可能性がありそうです。

gpu.jsはJavaScripts製のオープンソース・ソフトウェア(MIT License)です。

gpu.js - GPU Accelerated JavaScript gpujs/gpu.js: GPU Accelerated JavaScript