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.
Exploiting Parallelism
Intel is helping developers exploit parallelism and is working on helping them find opportunities for parallelism and debugging parallel programs.
“Debugging is a huge area, where if not done correctly can cause applications to fail,” Reinders said. “If you aren’t using techniques in your ‘QA-ing’ [quality assuring] of your software you’re going to pay the price,” he said. “We’re not anxious at Intel to see parallel programming get a bad name.”
Meanwhile, Intel is supporting transactional memory as a way to deal with parallelism. STM (software transactional memory) is a concurrency control mechanism analogous to database transactions for controlling access to shared memory in concurrent computing. Oberoi claims the technology got its start in Sun Labs. Intel’s C and C++ compilers support it.
“We want to see experience in parallelism add an item on resumes, just like you see Java on a person’s resume,” Reinders said.
Phil De La Zanda, who heads up the world wide sales strategy for Intel’s software developer products, said his key message is that multi-core is here to stay. “You as a programmer ought to think about parallel programming,” he said. “Now it’s going to become mainstream.”
De La Zanda said industries such as gaming, health care, digital media and financial services already are beginning to use parallel programming to create applications. It is not just for government labs or scientific and engineering efforts, he said.
“We want to facilitate huge growth [of parallel programming] with the mainstream developer — the developer who is using Microsoft Visual Studio.”
Sun is hoping to do the same thing with its developer base, Oberoi said.
Sun Studio is a set of C, C++ and Fortran compilers and tools that competes with Intel’s core developer tools and compilers.
Oberoi said the industry is really “just getting started from a frameworks perspective and has been going at a steady pace from a tools perspective” to offer support for parallel programming.
“We’ve seen a surge in interest in the techniques used in HPC [high performance computing] for not just science, but in other industries,” Oberoi said. “We see the HPC space outpacing the general IT space in terms of growth.”
And although Sun continues to work to add support for parallelism into its tools and platforms, the company has long had a feature in Sun Studio called Auto Parallelization or “autopar,” which will analyze your code “and if it feels it is ‘safe’ to do so it will create threads based on your loop structure” to support parallelism, Oberoi said.