By Doug Barney
RapidMind, Inc. of Waterloo, Ontario (www.rapidmind.com) recently announced version 3 of the RapidMind Multi-core Development Platform. Earlier versions of the environment allowed C++ programmers to exploit graphics processor units (GPU). With the new release, developers can take advantage of both graphics accelerators and multicore processors from AMD and Intel.
The number of processor cores is increasingly rapidly. Unfortunately, off-the-shelf operating systems and applications aren’t designed to fully exploit all these cores, experts contend.
In fact, applications can actually run slower on multicore systems, argues Mike McCool, chief scientist for RapidMind. Here’s how it works. As chip makers moved to multicore, due to power and heat considerations, they end up limiting the clock rates of individual cores. If the application only really exploits one core and that core runs more slowly, then the application runs more slowly, McCool says.
“It is pretty amazing what you can do with an off-the-shelf CPU and GPU, but no one is using them,” says Ray DePaul, president and CEO of RapidMind. Microsoft, especially on its client operating systems, hasn’t bridged this gap, RapidMind execs believe. “Microsoft hasn’t really spent time looking at what to do about this major disruption,” DePaul adds.
According to company officials, some developers go through the laborious process of building multithreaded applications to exploit the new generation of processors. This approach can be vulnerable to errors, often only exploits a fixed number of processor cores, and are frequently vendor specific.
The company believes that this style of multithreading programming is fraught with problems, including high overhead that slows performance, and that scalability is achieved only by specifically rewriting applications for new back-end hardware.
That’s where a product like RapidMind comes in. RapidMind, which can be described as middleware, makes it easier to build parallelized programs.
New applications can be written, or current programs can be ported to work with the RapidMind environment. RapidMind will automatically parallelize the application and spread the processing across all the cores. And as more cores are added, RapidMind will take advantage of those as well. The company claims typical performance gains of up to 10 times or more.
This isn’t just an issue for traditional high-performance computing applications such as engineering and technical computing. RapidMind also has customers in financial analysis, enterprise search, database, and digital video.
RapidMind today only supports C++, but is looking at possibly supporting newer languages such as C# in the future.
Any IDE that supports C++ can be used, including Visual Studio. More specifically, RapidMind supports Microsoft Visual C++ versions 7 and 8, as well as GCC 4 with Linux.
Developers can write brand new apps, or port their old ones. When porting, it makes most sense to focus on the areas that would benefit from a multicore or GPU boost. “Developers know where the slow parts are. We have simple APIs or calls they can make (to speed up these parts of the application),” says DePaul.
The IT industry today is looking to maximize server utilization. This increases density, reduces costs, and saves on electricity. Virtualization is one way to maximize utilization, but even as you virtualize, you might still have cores that are underutilized.
By helping individual applications better exploit hardware, RapidMind believes it plays a complementary role in virtual environments.
RapidMind is not the only company addressing the gap between CPU and GPU power and software. PeakStream has a similar story, but was recently acquired by Google, which now appears to be using PeakStream to make its existing server farms more efficient. Only time will tell if Google offers these capabilities to outside developers.
RapidMind, which claims 1,000 developers, is partnering with IBM and HP to help developers take better advantage of these hardware vendors’ high-end server platforms.
On the hardware side, the environment supports GPUs from NVIDIA and ATI.
For more details on the RapidMind environment, visit rapidmind.net/News-Nov5-CPU-Launch.php.