Compiling a High-Level Language for GPUs (via Language Support for Architectures and Compilers)

被引:44
作者
Dubach, Christophe [1 ]
Cheng, Perry [1 ]
Rabbah, Rodric [1 ]
Bacon, David F. [1 ]
Fink, Stephen J. [1 ]
机构
[1] Univ Edinburgh, Edinburgh EH8 9YL, Midlothian, Scotland
基金
英国工程与自然科学研究理事会;
关键词
Design; Languages; Performance; GPU; OpenCL; !text type='Java']Java[!/text; Lime; Streaming; Map; Reduce;
D O I
10.1145/2345156.2254066
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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.
引用
收藏
页码:1 / 11
页数:11
相关论文
共 22 条
[1]  
[Anonymous], PLDI
[2]  
[Anonymous], 2006, ASPLOS
[3]  
Auerbach J., 2010, OOPSLA
[4]  
Buck Ian., 2004, SIGGRAPH
[5]  
Cunningham D., 2011, X10 WORKS
[6]  
Han T. D., 2011, IEEE T PARALLEL DIST
[7]  
Hormati A. H., 2011, ASPLOS
[8]  
Jablin T.B., 2011, PLDI
[9]  
Khronos OpenCL Working Group, OPENCL SPEC
[10]  
Lee S., 2009, PPOPP