A compiler toolkit for array-based languages targeting CPU/GPU hybrid systems
Sable Research Group, School of Computer Science, McGill University
Sable Technical Report (2012-03), McGill University, Montreal, Canada, 2012
@TechReport{sable-tr-2012-3,
author={Rahul Garg, Laurie Hendren},
title={A compiler toolkit for array-based languages targeting CPU/GPU hybrid systems},
institution={Sable Research Group, School of Computer Science, McGill University},
number={SABLE-TR-2012-3},
year={2012},
month={November},
address={Montr’eal, Qu’ebec, Canada}
}
This paper presents a compiler toolkit that addresses two important emerging challenges: (1) effectively compiling dynamic array-based languages such as MATLAB, Python and R; and (2) effectively utilizing a wide range of rapidly evolving hybrid CPU/GPU architectures. The toolkit provides: a high-level IR specifically designed to express a wide range of arraybased computations and indexing modes; Velociraptor, a CPU/GPU code generator and runtime library; and RaijinCL, a portable autotuning GPU library for key BLAS routines. A compiler developer uses the toolkit by generating VelociraptorIR for key parts of an input program, and using Velociraptor to automatically generate CPU/GPU code. The toolkit leverages OpenCL and LLVM for GPU and CPU code generation respectively, and can thus be used for a wide variety of target architectures. To demonstrate different possible uses of the toolkit, the paper presents a proof-of-concept CPU/GPU Python compiler, and a GPU extension of a MATLAB JIT.
November 26, 2012 by hgpu