gpu.js – GPU Accelerated JavaScript

gpu.js
GPU Accelerated JavaScript

Perform massively parallel GPGPU computations using GPU.

Graceful pure JavaScript fallback when GPU is not available.

Matrix Multiplication

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)


Create a “kernel” (a fancy word for a function that runs on your GPU)

const gpu = new GPU();
const multiplyMatrix = gpu.createKernel(function(a, b) {
  var sum = 0;
  for (var i = 0; i 
const gpu = new GPU();
const multiplyMatrix = gpu.createKernel(function(a, b) {
  var sum = 0;
  for (var i = 0; i 


Call kernel

Performs matrix multiplication on 2 matrices of size 512 x 512

const c = multiplyMatrix(a, b);


Benchmark it!

Texture Mode (GPU only)



Run Benchmark


gpu.js relies on the assumption that the kernel function is using only a subset of legal JavaScript syntax:

  • 1D, 2D, 3D array of numbers or just numbers as kernel input
  • 1D, 2D, 3D array of numbers as kernel output
  • Number variables
  • Custom and custom native functions
  • Arithmetic operations (+, +=, -, *, /, %)
  • Javascript Math functions (Math.floor() and etc.)
  • Loops
  • if and else statements
  • const and let
  • No variables captured by a closure


Here is a chart representing the performance of a 512×512 matrix multiplication throughout our development (lower is better).

  • Hardware: Macbook Pro Retina 2012
  • Operating System: Mac OS X 10.12.5
  • Browser: Firefox 54.0.1 (64-Bit)
  • Hardware: i7-7700K + GTX1080
  • Operating System: Windows 10 (Build 15063.483)
  • Browser:

    Firefox 54.0.1 (32-Bit)

    Chrome 59.0.3071.115 (64-Bit)

    Edge 40.15063.0.0 (64-Bit)

Last Updated: 2017-07-23


This is the legacy version for backward compatiblity with the demos made using the “hackathon” API.


Download

2nd Place, Hack & Roll 2016

Made under 24 hours for a NUS Hackers hackathon, out of 68 competing projects.

Read More

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.