The authors created a library, ParallelJS, which runs JavaScript functions in parallel on heterogeneous systems of standard central processing units (CPUs) and NVIDIA graphics processing units (GPUs). For certain test algorithms, the authors reported a 28x speedup; other algorithms were a little slower than nonparallel implementations. Their library hides the details of parallel execution and falls back automatically to single-threaded CPU execution if GPUs are not available or the functions don’t meet behavior restrictions. Furthermore, it does not require additional language bindings. These project aspects all enhance usability. Given the current surge in JavaScript use, an easy-to-use library for parallelism is very timely.
The good news is that the authors describe a toolchain and compilation flow that uses easily available open-source components such as Firefox and NVIDIA’s NVVM compiler. The bad news is that none of their code is made available for verification or extension. Oddly enough, there are already two other “parallel JS” libraries on the web, both of which are available as open-source downloads: parallel.js (https://www.npmjs.org/package/paralleljs) and ParallelJS [1]. These other projects do not run on GPUs, however, and the authors of this paper don’t mention them.
It’s a shame that the code behind this paper isn’t available. This is not the first project with unpublished code, but for some reason this one really provoked me. The purpose of scientific publishing is to advance the state of the art and to verify results. With this project, like many others before it, no verification is possible. Advances based on these ideas require other researchers to reinvent the code, instead of picking it up and moving it forward. Making algorithms 28 times faster with an easy-to-use library is a remarkable claim. I guess we just have to take their word for it.