On the heels of its recent acquisition of Cilk Arts, Intel has acquired RapidMind products and technology, and the RapidMind founders, engineering team, and marketing team have joined Intel.
As described in RapidMind: C++ Meets Multicore, by RapidMind founders Stefanus Du Toit and Michael McCool, RapidMind is a framework for expressing data-parallel computations from within C++ and executing them on multicore processors. RapidMind was founded five years ago to commercialize a University of Waterloo programming system called Sh.
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.