Along with the inclusion of GPU cores within the same CPU die, the performance and programmability of Intel’s processor-graphics (GenX GPU) has been significantly improved over earlier generation of integrated graphics. The need now to directly and efficiently harness the computational power of the GPU placed right on the die is more than ever. To that effect, application developers would like to have a simple and efficient mechanism to invoke the GPU as an accelerator for the GPU-friendly or data-parallel segments of a program. From the programmer’s perspective, the goal is to extract as much performance as possible with minimal knowledge of the architectural details.
Cm (C-for-media), a high-level programming environment based on C/C++, to provide such an efficient interface to utilize Intel’s processor-graphics. Our Cm toolset consists of two primary components: 1) the compiler for the Cm language, which is a simple extension to C++, for the GPU-targeted code; and 2) the Cm runtime, which provides an API to C/C++ programs, for setting up the GPU to transfer data and execute GPU-targeted code. Cm was originally developed for accelerating vendor-specific media applications. However, we have illustrated the efficiency of Cm even on general-purpose data-parallel applications taken from a wide range of problem domains.