KERNELGEN – A Toolchain for Automatic GPU-centric Applications Porting
Institute of Computational Science, Faculty of Informatics, University of Lugano, Switzerland
SC’12, 2012
@article{mikushin2012kernelgen,
title={KERNELGEN – A Toolchain for Automatic GPU-centric Applications Porting},
author={Mikushin, Dmitry and Likhogrud, Nicolas},
year={2012}
}
KernelGen is a toolchain for porting existing source code on the GPU, that does not involve inserting annotations or manual kernels programming, but instead moves as much target source on the GPU, as possible, enabling automatic adaptation of large codebase, e.g. numerical models. Separate kernels are generated for parallel loops, and the rest of the code is inlined into single-threaded main kernel. Thus, for extra penalty of running some serial code on the GPU, the amount of data transfers could be significantly reduced. Unportable code like disk I/O and syscalls are offloaded on the host. Parallel loops extraction and analysis is performed with LLVM IR by means of specially developed transformations and LLVM Polly polyhedral analysis, both during compile time and runtime. With gcc frontend integration, KernelGen is able to generate GPU kernels for all major target languages. Performance tests showed the resulting kernels efficiency is similar to commercial compilers.
October 3, 2012 by hgpu