PPCG and Pencil compiler design
Publication date:
2016-05-11
Author:
Verdoolaege, Sven
Keywords:
polyhedral compilation
Abstract:
This course presents an overview of the inner workings of the polyhedral parallelizing compiler PPCG, which takes PENCIL code as input and produces either CUDA or OpenCL code. PENCIL is a subset of C99 with some extra builtins and pragmas that allow the user to express additional information that can be used by PPCG to produce better code. Some of the most prominent PENCIL features are described, along with their effect on PPCG. All the major steps of PPCG are covered, with a special focus on the choice of the core scheduling algorithm and its potential pitfalls.