KernelGen — a prototype of LLVM-based auto-parallelizing C/Fortran compiler for NVIDIA GRUs
Vestnik Ûžno-Uralʹskogo gosudarstvennogo universiteta. Seriâ Vyčislitelʹnaâ matematika i informatika, Tome 2 (2013) no. 4, pp. 28-43
Voir la notice de l'article provenant de la source Math-Net.Ru
The KernelGen project (http://kernelgen.org/) aims to develop Fortran and C compilers
based on the state-of-art open-source technologies for automatic GPU kernels generation from unmodified CPU source code, significantly improving the code porting experiences. Parallelism detection is based on LLVM/Polly and CLooG, extended with mapping of loops onto GPU compute grid, and assisted with runtime alias analysis. PTX assembly code is generated with NVPTX backend. Thanks to integration with GCC frontend by means of DragonEgg plugin, and customized linker, KernelGen features full GCC compatibility, and is able to compile complex applications into hybrid binaries containing both CPU and GPU-enabled executables. In addition to more robust parallelism detection, test kernels produced by KernelGen are up to 60 % faster than generated by PGI compiler for kernels source with manually inserted OpenACC directives.
Keywords:
GPU, LLVM, OpenACC, JIT-compilation, polyhedral analysis.
@article{VYURV_2013_2_4_a2,
author = {N. N. Likhogrud and D. N. Mikushin},
title = {KernelGen {\textemdash} a prototype of {LLVM-based} auto-parallelizing {C/Fortran} compiler for {NVIDIA} {GRUs}},
journal = {Vestnik \^U\v{z}no-Uralʹskogo gosudarstvennogo universiteta. Seri\^a Vy\v{c}islitelʹna\^a matematika i informatika},
pages = {28--43},
publisher = {mathdoc},
volume = {2},
number = {4},
year = {2013},
language = {ru},
url = {http://geodesic.mathdoc.fr/item/VYURV_2013_2_4_a2/}
}
TY - JOUR AU - N. N. Likhogrud AU - D. N. Mikushin TI - KernelGen — a prototype of LLVM-based auto-parallelizing C/Fortran compiler for NVIDIA GRUs JO - Vestnik Ûžno-Uralʹskogo gosudarstvennogo universiteta. Seriâ Vyčislitelʹnaâ matematika i informatika PY - 2013 SP - 28 EP - 43 VL - 2 IS - 4 PB - mathdoc UR - http://geodesic.mathdoc.fr/item/VYURV_2013_2_4_a2/ LA - ru ID - VYURV_2013_2_4_a2 ER -
%0 Journal Article %A N. N. Likhogrud %A D. N. Mikushin %T KernelGen — a prototype of LLVM-based auto-parallelizing C/Fortran compiler for NVIDIA GRUs %J Vestnik Ûžno-Uralʹskogo gosudarstvennogo universiteta. Seriâ Vyčislitelʹnaâ matematika i informatika %D 2013 %P 28-43 %V 2 %N 4 %I mathdoc %U http://geodesic.mathdoc.fr/item/VYURV_2013_2_4_a2/ %G ru %F VYURV_2013_2_4_a2
N. N. Likhogrud; D. N. Mikushin. KernelGen — a prototype of LLVM-based auto-parallelizing C/Fortran compiler for NVIDIA GRUs. Vestnik Ûžno-Uralʹskogo gosudarstvennogo universiteta. Seriâ Vyčislitelʹnaâ matematika i informatika, Tome 2 (2013) no. 4, pp. 28-43. http://geodesic.mathdoc.fr/item/VYURV_2013_2_4_a2/