Fri 21 - Thu 27 October 2011 Portland, Oregon, United States

Graphical Processing Units (GPUs) provide an excellent execution platform for several classes of computation intensive problems. Even though there are vendor-specific Application Programming Interfaces (APIs) for GPU programming, they all share a high-level of similarity. In this extended abstract, we introduce a transformation frame-work through which sequential programs from legacy systems can be executed in any of the two common GPU programming APIs: OpenCL and CUDA. Our study shows that blocks of independent sequential code can be converted automatically to an equivalent representation in OpenCL and CUDA. In some cases, the transformation requires additional information from the programmer regarding the specific computation and the GPU configuration. Our approach provides the design decisions for a Domain-Specific Language (DSL) to specify the additional information.