Parallel Data Processing for the Web

The web is the major platform for all kinds of applications. However, the lingua franca of the web is JavaScript, an interpreted script language, which runs single-threaded in most of these applications. The high demand on processing power has led to an
increasing number of APIs that expose hardware-supported parallelism (WebWorker API, WebGL). Others are proposed or on their way (SIMD.js, Web-CL, Shared Memory Model). Another trend is to define an optimized subset of JavaScript as compile
target (asm.js) or even a low-level compile format for the web (WebAssembly).

All Web APIs that expose hardware functionality are low-level and it is expected that web developers use libraries that which exploit the functionality rather than the immediate API. This works very well for WebGL, where web developers make use of libraries such as three.js or xml3d.js, which provide means for the development of 3D applications on a higher abstraction level. However, the other APIs are still stuck in prototype phase, where most of the demos showcase typical use-cases that can exploit data-parallelism optimally (e.g., computation of fractals). What is missing is an abstraction level for web developers that simplifies the use of low-level
APIs and maps computations to the most appropriate (available) API automatically.

In this project, we are working on creating a library that allows the development of web applications that require efficient data processing including performance portability. The Fastlane library will offer a higher abstraction level. Hence, it is usable by non-experts and can adapt to the heterogeneous web environment.

Our idea is to combine a graph based operator network with a JavaScript compiler framework. In the network, each node represents a reusable ope-
ration. This can be combined with other operations in the sense of building blocks. The network represents a control flow in form of feedback loops, which fits very well to the capabilities of functional reactive programming (FRP) frameworks, which are becoming increasingly popular on the web. In contrast to these frameworks, we use our compiler to optimize the network, merge operations, schedule parallel operations (task-level parallelism) and specialize parts of the control flow graph to APIs providing data-level parallelism.

The project is based on work and experience we gained in previous Intel-VCI projects and in particular in “Compiler Support for High-Performance Graphics”(AnySL) and “Scalable Shared Virtual Worlds in the Browser” (Xflow, shade.js). It will be conducted in collaboration with Moh Haghighat, Senior Principal Engineer at Intel SSG, and the SIMD.js team at Intel.

Project Team

Principal Investigators
Jan Sutter, M. Sc.