Getting programmers prepared for building applications that take advantage of multi-core systems will be one of the major challenges going forward.
Kuldip Oberoi, group product marketing manager in Sun Microsystems's developer marketing group, said, "We believe this is one of the biggest issues facing software developers in this decade."
I spoke with Oberoi at Sun's facility in Menlo Park, Calif. Meanwhile, during a visit to eWEEK's headquarters in New York, James Reinders, director of marketing and business for Intel's Software Developer Products group, said of the move to parallel programming: "This is a transition for the industry -- as in how do you develop software to take advantage of multi-core processors. Translating that is job one for us."
Reinders, who is based at Intel's Hillsboro, Ore., facility, said Intel is in a leadership position to support application development for multi-core systems. The company is a champion of major parallel programming efforts and standards such as OpenMP [Open Multi-Processing], MPI (Message Passing Interface) and Intel's own TBB (Threading Building Blocks), which the company has open-sourced.
"We're starting to put multiple cores in every processor, so we have to start writing our programs to distribute the workload," Reinders said. He said there are three main concepts to be considered: scalability, correctness ("or the ability to debug in parallel") and maintainability
Although about 40 percent of the enterprises currently looking at or doing parallel programming are in the United States, many companies said it is not something they plan to implement because it is not in line with their release schedules. Indeed, in an Intel-sponsored survey, 55 percent of the companies who responded gave their product schedules as a reason for not implementing parallel programming techniques. Reinders said 27 percent said they do not need to act yet, and 14 percent said they see no use for it.
Nonetheless, Intel is poised to deliver tools to support developers who are ready to move to parallel programming.
Reinders warns that there is no parallel programming nirvana. He said there is no way of automating parallel programming so that a developer does not have to think about it. Instead, a developer has to start with the proper process and algorithms to deal with parallelism.
The "holy grail" would be a tool that would magically see how to make your program run in parallel -- and do it for you, Reinders said.
"I'm not predicting 'holy grail' will happen at all -- been there, tried that, failed," he said. "Many people have. Instead, I start with an observation that tools which would "help find parallelism" are possible to write, and I think we'll see more and more of them. Using a tool to 'discover' opportunities for parallelism would then be followed by a quick proof-of-concept through rapid prototyping to evaluate the potential for real results."
Moreover, "The wild card is: Does parallelism change the application you want to develop, or do you want parallelism to make the applications you have now run better?" Reinders said. He added that he believes parallel programming may lead to new companies attacking problems with new approaches to compete with existing businesses.