Friday, October 7, 2011

Tool: Building a Computing Highway for Web Applications

Multicore js

Building a Computing Highway for Web Applications

I live online. I store all my email, documents and pictures in the cloud. Except for work, the only application I regularly use on my computer is a web browser. It gives me access to everything I need. Nearly everything: Although those days when web browsers were only designed for light weight tasks are gone, some compute intensive applications, like photo editing, still force me to leave my browser environment and use a native application instead.

If applications were like road traffic, then web browsers used to be the country roads: Capable of handling some traffic at slow speeds but too underdeveloped to take a heavy load. This no longer is the case. Browser vendors have invested into their browser’s execution engines, increasing the speed limit on their country roads significantly. Still, native applications have a performance advantage.

This advantage is no longer just due to slower execution speeds. If you look at modern processors, they all come with some form of vector extensions that allow the processor to execute multiple operations at the same time. Keeping with the road analogy, native applications run on multi lane highways. Intel’s 2nd generation Core series just introduced AVX, which doubled the number of lanes compared to previous processor generations. Another performance boost available to native applications is the use of multiple roads: Most modern systems feature a multi-core processor.

Web applications so far have lost out in both regards. JavaScript, the language behind the web, does not give applications access to multiple cores, let alone vector instructions. Thus forcing me to use native applications where performance matters although I would prefer staying in the browser. Clearly, it is time for JavaScript to catch up.

This is where Parallel Extensions for JavaScript, code named River Trail, an Intel Labs project I am working on that is currently shown at IDF, comes into the game. River Trail brings the processing power of Intel’s multi-core CPUs and their vector extensions to web applications. With River Trail it will finally be possible to stay in the browser even for more compute intensive applications like photo editing.

What really excites me about the technology behind River Trail is its seamless integration with existing web technologies. River Trail extends JavaScript with a simple, yet powerful data-parallel programming model. Much effort was spent to make this extension feel as natural as possible. Our goal was to make writing web applications with River Trail as easy as writing regular JavaScript. Furthermore, as River Trail is embedded into JavaScript, it combines well with other upcoming HTML5 APIs. We in particular made sure that River Trail plays nicely with WebGL, a recently introduced JavaScript API to OpenGL used for 3D visualization in the browser: One of our demo applications is a physics simulation with more than 4000 bodies, where the computation...

Sent from my iPhone