|
Issue 44 - May 2009
Editorial Intro - Matt Nicholson
The Intel Software Conference, now in its fourth year in Europe, is a significant event for anyone involved in software development, whether they actually attend or not. This is because it is a primary vehicle through which Intel is guiding the industry towards parallelism, by which it means the art of writing software that can take advantage of the latest multi-core processors.
The main thrust of the first two events was to hammer home the message that, as Microsoft's Herb Sutter put it in his Lisbon keynote, "Your free lunch is over." Until recently, Intel was able to increase the clock speed of its processors with each successive generation, with the result that code automatically ran faster without the developer having to make any changes. However Intel hit a brick wall at around 3.8GHz, and so started looking for new ways to increase processing power. The answer came with multi-core: rather than attempt to execute more operations each second, do more than one operation at a time. The first twin-core processors appeared a few years ago and now virtually all new desktops and laptops are at least twin-core, and many are quad-core.
The problem is that code will only run faster on a multi-core machine if it is re-written to do more than one thing at a time. In the first two events, Intel introduced us to the problems that are unique to parallel programming, such as deadlocks and race conditions, and the techniques available to C and C++ developers for overcoming them. We were also shown the tools and code libraries that could help, such as Intel Thread Checker, VTune, Threading Building Blocks (TBB) and Integrated Performance Primitives (IPP).
However these are low-level. At its most recent conference, held in Salzburg this April, the emphasis changed. Intel realises that, if the bulk of software is to take advantage of multi-core processors in a truly scalable fashion then parallelism needs to be built into languages and tools at a much higher level. As James Reinders pointed out in his session "Easing Parallelism into the Mainstream", code written in 6502 assembler language is all but incomprehensible today, but a program written in the 1970s in C could probably be made to run on a modern PC with just minor changes.
The main thrust at Salzburg was the introduction of Intel Parallel Studio, a new toolset designed to "bring parallelism to the rest of the world." Parallel Studio is covered in more depth on page 29. However we were also given glimpses of work that Intel is doing with Microsoft to bring parallelism to languages such as Visual Basic and C# through the next version of Visual Studio, and of high-level language abstractions that Intel is working on such as Ct Technology. It is initiatives such as these that will allow us to take advantage of the next 'free lunch': in other words write code that automatically speeds up as more cores become available.
|
|