6453

A programming language interface to describe transformations and code generation

Gabe Rudy, Malik Murtaza Khan, Mary Hall, Chun Chen, Jacqueline Chame
School of Computing, University of Utah, Salt Lake City, UT
Languages and Compilers for Parallel Computing, Lecture Notes in Computer Science, Volume 6548/2011, 136-150, 2011

@article{rudy2011programming,

   title={A programming language interface to describe transformations and code generation},

   author={Rudy, G. and Khan, M. and Hall, M. and Chen, C. and Chame, J.},

   journal={Languages and Compilers for Parallel Computing},

   pages={136–150},

   year={2011},

   publisher={Springer}

}

Download Download (PDF)   View View   Source Source   

858

views

This paper presents a programming language interface, a complete scripting language, to describe composable compiler transformations. These transformation programs can be written, shared and reused by non-expert application and library developers. From a compiler writer’s perspective, a scripting language interface permits rapid prototyping of compiler algorithms that can mix levels and compose different sequences of transformations, producing readable code as output. From a library or application developer’s perspective, the use of transformation programs permits expression of clean high-level code, and a separate description of how to map that code to architectural features, easing maintenance and porting to new architectures. We illustrate this interface in the context of CUDA-CHiLL, a source-to-source compiler transformation and code generation framework that transforms sequential loop nests to high-performance GPU code. We show how this high-level transformation and code generation language can be used to express: (1) complex transformation sequences, exemplified by a single loop restructuring construct used to generate a series of tiling and permute commands; and, (2) complex code generation sequences to produce CUDA code from a high-level specification. We demonstrate that the automatically-generated code either performs closely or outperforms two hand-tuned GPU library kernels from Nvidia’s CUBLAS 2.2 and 3.2 libraries.
No votes yet.
Please wait...

* * *

* * *

HGPU group © 2010-2017 hgpu.org

All rights belong to the respective authors

Contact us: