SIMD JavaScript Support Added To Firefox, Under Review For Chrome
One of Intel's latest open-source adventures has been adding support for SIMD (Single Instruction, Multiple Data) instructions to JavaScript.
For better exploiting the potential of JavaScript performance on the web, Intel has been backing the SIMD.js for an API to exploit data level parallelism in JavaScript. SIMD support is available in modern x86/ARM CPUs along with GPUs. For JavaScript SIMD calls without the CPU hardware support, a software-based fallback would be used.
Intel explains in a 01.org blog post, "We have introduced a set of low level APIs for programming SIMD directly in JavaScript. The API can be efficiently mapped to the processor’s SIMD instructions by a JavaScript JIT compiler when the processor has SIMD capabilities; otherwise, a default VM implementation will accomplish the task. Mozilla’s Emscripten compiler, that compiles C++ to JavaScript through LLVM, is also being modified to generate SIMD code automatically. The SIMD.JS API is architecture-neutral and allows efficient SIMD execution on different platforms that support SIMD (e.g., Intel Architecture and ARM)."
SIMD.js support has landed in the latest Firefox nightly builds (for Firefox 31 and going forward) while the SIMD API support is currently under review for landing within Google's Chrome/Chromium web-browser. There's a JavaScript speed-up of close to 400% using float32x and int32x4 SIMD operations. With the Mandelbrot set are dramatic speed-ups along with other workloads to exploit SIMD parallelism. Developers are now trying to get SIMD support added to the JavaScript standard.
For better exploiting the potential of JavaScript performance on the web, Intel has been backing the SIMD.js for an API to exploit data level parallelism in JavaScript. SIMD support is available in modern x86/ARM CPUs along with GPUs. For JavaScript SIMD calls without the CPU hardware support, a software-based fallback would be used.
Intel explains in a 01.org blog post, "We have introduced a set of low level APIs for programming SIMD directly in JavaScript. The API can be efficiently mapped to the processor’s SIMD instructions by a JavaScript JIT compiler when the processor has SIMD capabilities; otherwise, a default VM implementation will accomplish the task. Mozilla’s Emscripten compiler, that compiles C++ to JavaScript through LLVM, is also being modified to generate SIMD code automatically. The SIMD.JS API is architecture-neutral and allows efficient SIMD execution on different platforms that support SIMD (e.g., Intel Architecture and ARM)."
SIMD.js support has landed in the latest Firefox nightly builds (for Firefox 31 and going forward) while the SIMD API support is currently under review for landing within Google's Chrome/Chromium web-browser. There's a JavaScript speed-up of close to 400% using float32x and int32x4 SIMD operations. With the Mandelbrot set are dramatic speed-ups along with other workloads to exploit SIMD parallelism. Developers are now trying to get SIMD support added to the JavaScript standard.
52 Comments