|The Leading Source for Global News and Information Covering the Ecosystem of High Productivity Computing / May 11, 2007|
Hot on the heels of PeakStream, RapidMind Inc. has launched its software development platform for multicore computing. On Monday the company announced RapidMind Platform v2.0, a software environment that targets GPUs from both NVIDIA and AMD/ATI as well as IBM's Cell processor. The company has also prototyped a version that will support multicore x86 processors from Intel and AMD.
Both PeakStream and RapidMind have launched platforms based on the same basic premise: HPC application developers want to be able to write hardware-agnostic code for multicore architectures. Considering the diverse range of multicore hardware that is beginning to populate HPC systems (e.g,, the Cell processors, NVIDIA/AMD GPUs, and Intel/AMD x86 chips), this seems like the right approach. The underlying proposition is that the current crop of multicore devices will rapidly evolve in both architecture and core count. With this type of volatility, software developers will be motivated to decouple their code from the hardware so that their applications can live on different types of architectures and automatically scale as new processor generations are introduced.
In talking with RapidMind's President and CEO Ray DePaul, and Chief Scientist and company co-founder Michael McCool, it's clear that their vision of delivering productivity to these multicore-based systems is to move beyond the thread model of parallelism. McCool said programmer-controlled thread management is fraught with problems. The scalability issue of mapping static application thread counts to processor cores is always a problem if application portability is a goal. Beyond that there are the inherent dangers of deadlocks and race conditions and load balancing problems when the thread workloads are asymmetric.
The RapidMind Platform uses existing C++ compilers and tools; developers just have to link in the RapidMind library to access the provided API. The library manages all the low-level parallelism and data streaming. The programming model presented to the user is independent of the number or cores or any other specific hardware attributes. The parallelism and data movement are managed in the internal layers of the software. According to McCool, this makes it impossible for developers to generate race conditions or deadlocks. He claims that the programming concepts involved can be learned within half an hour by any good software engineer.
The company has supposedly attracted over 1000 beta developers for applications that range from medical imaging to financial analysis and spam filtering. RTT USA is already using RapidMind's platform to develop commercial 3D real-time visualization applications for the automotive, aircraft and consumer-goods industries.
RapidMind's model, like PeakStream's, is geared for data-level parallelism. It's described as an SPMD (Single Program Multiple Data) stream processing model, where different cores execute the same instructions, with each core working on different data. Using the platform's API, developers define functions that are applied to data arrays. At runtime, the system software automatically distributes the data operations across the different processing elements.
The rationale for this approach has to do with the dichotomy between computation and memory performance. While it is relatively straightforward to add more cores as process technology shrinks, memory bandwidth to feed those cores is not increasing nearly as fast. McCool said the RapidMind software works very hard to optimize data movement so that memory latencies are hidden and RAM accesses are performed efficiently. The RapidMind system also includes load balancing to move work around so that all the cores are used efficiently.
"The system is highly tuned toward making sure that memory transfers overlap with computations, and that the data stays on-chip as long as possible and you get as much work done before the data goes off-chip again," explained McCool.
Given the high level of parallelism inherent in processors like the Cell and GPUs, these architectures are particularly well-suited for this type of stream computing model. The Cell contains nine cores: a PowerPC core and eight Synergistic Processing Units (SPUs). And as long as you're not in the market for double-precision support, NVIDIA and AMD GPUS support even greater parallelism. The latest NVIDIA G80 device encompasses 128 cores. But as DePaul stated, "the challenge has always been how the developer can take advantage of these accelerator-type models."
HPC programmers are all for removing complexity -- as long as you don't remove the performance too. RapidMind presented some benchmarks to show they are delivering the expected performance when using GPUs for acceleration. Running an application based on the Black-Scholes algorithm, the company was able to show a 32x performance speedup on an NVIDIA 7900 GTX compared to the same application running on a Woodcrest Xeon workstation. They also showed a 2x performance increase for a BLAS routine SGEMM application, and 3x increase for an FFT workload. The results are not too surprising considering the single-precision floating point performance advantages of a high-end GPU versus a high-end CPU.
More impressive were the results they got when comparing a (Quaternion Julia Set) renderer application on the Cell processor. On code that was tuned by both IBM and RapidMind engineers for the same Cell platform, RapidMind outperformed the IBM's Cell SDK implementation by almost a factor of two. The renderer algorithm itself was relatively simple. The complex part, at least for the IBM developers, was targeting the code to the Cell platform.
DePaul noted this wasn't a matter of the developer not being good enough (we assume the IBM Cell programmers know how their own hardware works). He said there is so much complexity involved in making sure that the eight SPU cores, the DMA transfers and memory latency are all coordinated, that it's hard for mere humans to deal with all the interactions.
RapidMind currently supports the NVIDIA GeForce 6000, 7000 or 8000 cards, the NVIDIA Quadro card, and the ATI x1X00 family of cards. The Cell BE processor is supported on the IBM QS20/30 blade and the Sony PlayStation3 using Yellow Dog Linux. (If you've got an idle PlayStation3 lying around, you can download the RapidMind Developer Edition for free at http://www.rapidmind.net.)
Support for the Intel and AMD multicore x86 processors is in the works. A prototype of this software was able to achieve an 8x improvement in performance on a quad-core Intel Xeon versus a single-core implementation on the same platform. The interesting aspect here is that the RapidMind implementation was apparently able to double the application performance per core by exploiting parallelism that the compiler alone couldn't extract.
The company plans to use its recent $10 million funding infusion to bring the x86 multicore support capability to market and to expand the sales and marketing crew. Future plans to support other architectures will be based on customer demand.