Software developers were exhorted to "think parallel" Tuesday by an Intel Corp. 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, Intel's director and chief evangelist for software development products, emphasized that parallelism is a budding trend and pointed out the tools that Intel offers in that space.
[Related InfoWorld story: "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 it 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 of turning 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, that 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 tool kit, geared toward parallel application development in C/C++, is in a beta release, and he noted that thousands of people are 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, for finding synchronization errors; and Intel Parallel Amplifier, for finding bottlenecks and tuning applications. It also finds problematic locks.
As part of Intel Parallel Studio, the company also offers Intel Threading Building Blocks, an open-source technology designed to extend C++ for parallelism. On the horizon is the company's Parallel Advisor tool, due in the second quarter of this year, which is designed to provide 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 reminded the audience about Intel's planned many-core processor, code-named Larrabee, for high-performance graphics capabilities.
This story, "Intel wants developers to think parallel" was originally published by InfoWorld.