Software developers were exhorted to "think parallel" Tuesday by an Intel official who stressed a changing paradigm in which applications accommodate many CPU cores.
Speaking during a keynote presentation at the SD West 2009 conference in Santa Clara, Calif., James Reinders, director and chief evangelist for Intel software development products, emphasized the budding trend of parallelism and noted the company's tools products in this space.
[ Related: Multicore chips mean new challenges for developers. ]
"One of the phrases I've used in some talks is it's time for us as software developers to really figure out how to think parallel," Reinders said. Designing parallel programs is becoming fundamental to the programmer's job and those who do not figure it out will have a limited career path, he said.
Intel, he said, is in its fifth year of shipping multicore processors and will ship a many-core processor this year. "While we're still wrestling with how do I use two, four, eight cores, we’re going to throw into the mix a processor with dozens of cores," said Reinders. He defined processors with more than 16 or 32 cores as many-core processors and added that these require different design techniques.
Referring to an article he had published in 2007, Reinders cited eight rules for parallelism: think parallel; program using abstraction; program tasks, not threads; design with the option to turn off concurrency; avoid locks when possible; use tools and libraries designed to help with concurrency, use scalable memory; and design to scale through increased workloads.
"It's very important to make sure, if at all possible, your program can run in a single thread with concurrency off," Reinders said. "You shouldn't design your program so it has to have parallelism. It makes it much more difficult to debug."
Citing Intel efforts, Reinders said the Intel Parallel Studio toolkit, geared to parallel application development in C/C++, was in a beta release and has thousands of people using it. "The idea here [with] this project was to add parallelism support to [Microsoft's] Visual Studio in a big way," said Reinders. Components of Parallel Studio include Intel Parallel Composer, for compiling and debugging; Intel Parallel Inspector, to find synchronization errors; and Intel Parallel Amplifier, to find bottlenecks and tune applications. It also finds problematic locks.
As part of Intel Parallel Studio, the company also offers Intel Threading Building Blocks, an open source technology to extend C++ for parallelism. On the horizon is the company's Parallel Advisor tool, due in the second quarter of this year, providing design phase capabilities. It combines capabilities of Inspector and Amplifier. Either later this year or early next year, Intel plans to extend Amplifier and Inspector to Linux, Reinders said.
Reinders also noted Intel's planned many-core processor, codenamed Larrabee, for high-performance graphics capabilities.