Like an amoeba, processor cores seem to be dividing. With 4-, 8- and 16-core chips out there now, and even more cores coming, developers have their work cut out for them.
CPUs aren’t the only place to find extra cores for your HPC applications. Graphics processing units (GPUs) are standard in most modern PCs, and if you learn how to tap into their power, you can get an extra burst of speed for those tough-to-compute algorithms.
David Intersimone, vice president of developer relations and chief evangelist at Embarcadero Technologies, said that GPUs are becoming as common as multicore processors. “We’re seeing GPUs appearing everywhere, not only on desktops, but on tablets and mobile devices,” he said.
“People are using them for graphics acceleration, of course. But the processors can do more. At nVidia, they’re saying, ‘There are gamers and then there are artists, and that’s fine.’ But the big energy is being put into GPU computing, and for nVidia, that’s CUDA, and for those of us that want to support multiple graphics processor vendors, it’s OpenCL.”
Neal Robinson, senior director of global content and application support at AMD, said that the ever-increasing power of processors is diminished for developers who don’t fully take advantage of multicore programming techniques.
“We’ve got that Moore’s law issue, where we can’t just depend on speedups in hardware to provide huge leaps forward in software performance anymore. That’s where really putting to use the compute resources we’re putting out there for developers makes all the difference in the world,” he said.
“Developers usually don’t know how many cores are in the machine, all they know is the software experience. That’s where we are concentrating. We’ve got a good chunk of folks working on the language, making sure the tools are available.”
nVidia has also been focusing heavily on CPU/GPU software development. The company has released numerous revisions of its CUDA tools, now on version 4.1. nVidia also supports OpenCL use and tooling on its cards, but it’s ATI that has taken on OpenCL as its primary HPC development framework.