Abstract
GPUs are getting more and more important in scientific computing, slowly growing from peripheral accelerators into central processing nodes. In the same time, current OpenACC and HMPP directive-based approaches imply offloading of “hot” code regions onto GPUs, as the only one possible development strategy. Furthermore, as the portion of GPU code and target application size grows, essential limitations of this programming model such as unsupported external functions calls and insufficient data dependencies analysis become critical. This paper introduces more robust parallelism detection approach based on runtime-assisted polyhedral analysis and LLVM compiler infrastructure, as well as a novel GPU-centric execution model. Complemented by GCC frontend, NVPTX backend and other parts, complete GPU compiler prototype called KernelGen has been developed. Test kernels produced by KernelGen are up to 60% faster than PGI OpenACC compiler. KernelGen is proposed as community open-source platform for GPU compiler optimizations research