Raising the Level of Abstraction for GPU Programming

Date:

Programming GPUs presents several challenges, particularly the significant effort required to integrate kernel functionality with the parallel programming constructs provided by APIs such as CUDA and OpenCL. This project introduces an approach that raises the level of abstraction in GPU programming by implementing an abstract API compatible with both CUDA and OpenCL frameworks.

Our method separates the mechanical and repetitive aspects of GPU code development into modular components. Using static code analysis and generative programming techniques, the system can automatically generate the necessary host code for CUDA and OpenCL from minimal programmer input. The resulting generated code closely mirrors hand-written implementations, achieving comparable performance while significantly reducing development effort and improving maintainability.

Slides