The Next Big Thing: Native-App Performance Through A Browser

For solution providers--and developers in general--the goal of natively targeting multiple platforms from a single code base has remained elusive.

It can be done with wrappers and runtimes, but at the cost of performance and the platform's native look and feel. The browser and HTML5 have gotten us closer; enabling function-rich apps that run consistently on desktops, laptops and mobile devices without the need for plug-ins. But such apps have lacked direct access to the host processor, taking complex graphics and other compute-intensive functions off the table.

But all that is about to change. In collaboration with Google and Mozilla,  Intel has developed SIMD.js, a JavaScript library that leverages the single-instruction multiple-data instruction set resident in Intel and ARM processors to bring a form of parallelism to web apps. SIMD, which is short for single instruction, multiple data, allows developers to issue a single instruction and receive multiple replies. Until now, the technique--and its inherent performance boost--has been available only to developers of native code.

"We have had SIMD support in C++ for a long time," said Mohammed Haghighat, said Intel senior principal engineer during his Intel Developer Forum 2014 presentation in Shenzhen China on April 2. He went on to explain the program efficiencies that can be gained by accessing a form of parallelism that's inside virtually all modern processors.

In essence, a single SIMD instruction replaces what would have required loop-trip count of four. Such efficiencies, according to Haghighat, return performance gains commensurate with the vector length. "You get a 4X speed-up with a vector length of four, an 8X speed-up if the vector length is eight." Intel architecture even offers a 16 vector length. "And sometimes you get super linear speed-up because of the elimination of nonlinearity that exists in the microarchitecture," he added. "With that you can do 16 additions simultaneously with a single instruction. Or you can transpose a 4x4 matrix with just one shuffle instruction. We want that power in JavaScript, the language of the web."
 

NEXT: "People Need A New Way To Reach Out"