Santa Clara, Ca. – Intel has acquired RapidMind, a provider of software tools that allow development of C++ code for use on multiple processors.
Coming on the heels of Intel's acquisition of Wind River Systems, the move seems to be a part of a strategy by Intel to build up its in-house multicore software capability without depending on outside companies, as Intel did with Microsoft on the PC during the “Wintel” days in the 1980s and 1990s.
RapidMind founders Stefanus Du Toit and Michael McCool have joined Intel, as have their engineering and marketing teams in what to all intents and purposes was a very friendly take-over.
RapidMind was founded five years ago to commercialize a University of Waterloo programming system called Sh. The RapidMind software is a framework for expressing data-parallel computations from within C++ and executing them on multicore processors.
RapidMind says that it will continue to sell its platform and support existing customers. Details about the integration of the RapidMind platform and Intel software products and technologies, including the Intel Ct technology for data parallelism, will be announced later this year.
The RapidMind platform is based around the concept of data parallelism and not task parallelism (“multi-threading”). One advantage of data parallelism is that programs can be written without regard for the number of cores in the hardware target.
Instead, the available parallelism is proportional to the amount of data, and the platform maps this onto the number of cores available. As data sets get larger, the amount of available parallelism grows, allowing applications to efficiently take advantage of any number of cores without recoding.
The RapidMind API works with existing C++ compilers. You just link to it as if it were a library. Therefore, you can use RapidMind with existing build systems and IDEs.
Porting an application to a multicore processor with RapidMind is an incremental process. You first identify, using profiling tools, a section of the application which is consuming a large amount of execution time.
The kernel of this “hotspot” can then be RapidMind-enabled by converting existing numerical and array types to their RapidMind equivalents, and using the RapidMind API to “capture” the computation.
The RapidMind platform then maps the computation to a hardware target with any number of cores, offloading the main program. This process can be repeated as many times as necessary.
Defining a multicore RapidMind computation is essentially as easy as defining a C++ function. Using RapidMind does not prevent using other programming techniques, tools, or libraries. To achieve results quickly, developers RapidMind-enable the more performance critical parts of their application. The remainder of their code is unaffected.
To read more about the RapidMind platform, go to “High-level parallel programming model simplifies multicore design” and “Transcoding video with parallel programming on multi-core processors,” as well as “C++ meets multicore.”