Compiling a high-level language for GPUs: (via language support for architectures and compilers)
University of Edinburgh
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation (PLDI ’12), 2012
@inproceedings{dubach2012compiling,
title={Compiling a high-level language for GPUs:(via language support for architectures and compilers)},
author={Dubach, C. and Cheng, P. and Rabbah, R. and Bacon, D.F. and Fink, S.J.},
booktitle={Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation},
pages={1–12},
year={2012},
organization={ACM}
}
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.
June 26, 2012 by hgpu