For The Love of Multi-Core Pain
Page 1 of 2
Multi-core is red hot. But most people in the IT industry don't realize how much of a pain it is to write applications that can handle the increased performance that comes with multi-core processors.
Most application developers have just been trained on your classic single-core scenario and lack the wherewithal to program for many cores and threads.
But with the pressure mounting to contend with the enhanced perks of multi-core chips for high-performance computing, or multi-core GPUs for video gaming, it's becoming more imperative for developers to get up to speed with how to write new applications.
The startup recently launched the second version of its application-development platform to help independent software developers (ISVs) write multi-core applications without having to relearn programming.
Internetnews.com recently caught up with RapidMind CEO Ray DePaul and Chief Scientist and Co-Founder Michael McCool to discuss how the company plans to make an impact among programmers with its new platform.
Q: What problem is RapidMind trying to solve?
DePaul: We are leading the way in solving what's become known as the multi-core challenge. In the last couple of decades, processors got faster simply by increasing the clock speed. So you went from one to two to three gigahertz, and software just went along for the ride and had a free lunch.
As of a couple years ago, the processors couldn't increase the clock speed anymore because of power and heat dissipation. So we all realized we could add multiple cores and claim a much higher theoretical performance.
You can look at Intel going from a dual core to a quad core recently, and people are struggling to find out what to do with these additional cores. The GPU vendors, ATI and Nvidia, have known about multi-core for years. In fact, the latest GPUs have up to 128 cores, so they're way ahead of the game on this.
These are commodity processors that are shipped on video cards and have tremendous performance over the CPU that's in the machine. The Cell (the Sony-Toshiba-IBM project for the PlayStation 3 is very similar) is a nine-core processor. So, there's a wonderful opportunity to leverage these processors. But frankly, the software industry has no idea how to take advantage of them.
Whether it's gaming or high-performance computing, everybody is having difficulty getting to those performance levels the processors theoretically have when you add all of the cores up.
Q: So while the processors are doing their job, the underlying software is struggling to keep up?
DePaul: Right. With the clock speed not increasing, if an application does nothing, it will likely just run on a single core. That core isn't getting any faster. Typically, an application has a higher and higher workload to deal with, so the net effect of that is that the application is going to feel slower.
McCool: The summary here is Moore's Law still exists. We're still going to see performance doubling every 18 months, but it's going to be doing that with a doubling of cores as opposed to doubling of each core. This means not only will you increase in performance, but the number of cores is going to grow exponentially over time. It's a very challenging problem for programming.
DePaul: Think about the complications of Intel showing an 80-core TeraScale prototype and everybody's going "oooh" and "ahhh." But the software industry is going "What do I do with that? How do I take advantage of 80 cores?" That is the gap that exists between what the hardware is capable of and what the software industry is capable of.
We want developers to embrace these new technologies to achieve the performance the processor vendors are promising and do it in a way that doesn't require a lot of retraining. Developers understand their domain and their application, but it's too much to ask developers to understand all of the processor-specific issues and to track processor development.
There's a whole generation of developers that haven't been taught how to develop in more than one core.
Next page: Developer challenges in multi-core programming.