One day into Intel’s ‘Parallel Universe’ Software Conference 2009 here in Salzburg and we’re well fueled up on goulash, dumplings and sauerkraut and keen to get stuck into the proposition behind the company’s Parallels Studio toolkit. It is due for release on May 26th and its launch will sit alongside the arrival of new versions of the Intel compiler toolsets.
Intel says its existing tools are focused on maximising parallel performance for C++ Fortran on Windows, Linux and Mac OS X – and the new product will be aligned to C++ using Visual Studio on Windows.
The company’s chief software evangelist James Reinders presented this morning underlining the fact that almost every processor shipped by Intel today is actually multicore. Positioning the Parallels Studio toolkit in line with its HPC (high performance computing) tools, Reinders tried to provide some tangible feel for the latest products by saying, “I’ll promise you that in ten or twenty years we’ll look back and see that what we have developed here isn’t quite perfect, even though I love the product as it stands today. These tools are incredibly powerful but they are not magic, they will not solve all developers’ problems as they move towards parallelism.”
So how do developers add parallelism to their code? Intel’s approach is to take the following structure Design -> Code & Debug ->Verify -> Tune. Logically then, the company has tools that are designed to support each of these processes.
Several references are being made this week to try and refute the anti-threading arguments expounded by Edward A. Lee in his paper “The Problem with Threads” which he composed at the University of California, Berkeley, in 2006. Lee said that, Although threads seem to be a small step from sequential computation, in fact, they represent a huge step. They discard the most essential and appealing properties of sequential computation: understandability, predictability and determinism. Threads, as a model of computation, are wildly nondeterministic and the job of the programmer becomes one of pruning that nondeterminism.” You can read the whole paper here if you wish.
Reinders smiles knowingly every time this paper is mentioned as if it has become his nemesis in the three years since its emergence. Defending his stance and his company’s strategic alignment towards threading and the use of the multicore chips that Intel’s FABs pump out, he cites a plethora of real world application examples that employ parallelism.
According to Intel, parallelism has been popular with many multimedia apps such as AutoDesk Maya and Adobe Photoshop and Apple has used it extensively in its DVD focused applications even when as few as two cores are involved – and there are many more examples in HPC and supercomputing.
Reinder’s also noted that, “Internet Explorer and Outlook also use parallelism to a degree so that they are in fact threaded applications. Although I think Firefox implemented TABS with parallelism much better than IE has done and I think Microsoft knows that, so they are making efforts to catch up.”
There’s a challenge for all the speakers here to make additional layers of complexity digestible for an audience that is (due to its heavy channel presence) mostly interested in how they can describe what the products too so that they can sell more.
There are resources for everyone to read here – and Intel is more than just a little bullish about its position in the market. In fairness to Intel, I speak to a lot of software companies about the escalating needs of the software development marketplace and not many other vendors bother to concentrate on this reality (if I can call it that – and I think I can) in modern development shops. Let’s go forth and multiply then.