Compiling a high-level language for GPUs: (via language support for architectures and compilers)

Christophe Dubach, Perry Cheng, Rodric Rabbah, David F. Bacon, Stephen J. Fink

Research output: Chapter in Book/Report/Conference proceedingConference contribution


Languages such as OpenCL and CUDA offer a standard interface for general-purpose programming of GPUs. However, with these languages, programmers must explicitly manage numerous low-level details involving communication and synchronization. This burden makes programming GPUs difficult and error-prone, rendering these powerful devices inaccessible to most programmers.

We desire a higher-level programming model that makes GPUs more accessible while also effectively exploiting their computational power. This paper presents features of Lime, a new Java-compatible language targeting heterogeneous systems, that allow an optimizing compiler to generate high quality GPU code. The key insight is that the language type system enforces isolation and immutability invariants that allow the compiler to optimize for a GPU without heroic compiler analysis.

Our compiler attains GPU speedups between 75% and 140% of the performance of native OpenCL code.
Original languageEnglish
Title of host publicationProceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Place of PublicationNew York, NY, USA
Number of pages12
ISBN (Print)978-1-4503-1205-9
Publication statusPublished - 2012

Publication series

NamePLDI '12


  • GPU
  • OpenCL
  • Java
  • Lime
  • Streaming
  • Map
  • Reduce


Dive into the research topics of 'Compiling a high-level language for GPUs: (via language support for architectures and compilers)'. Together they form a unique fingerprint.

Cite this