Polyhedral Compilation and Accelerator Programming with PENCIL and PPCG
Programming accelerators such as GPUs with low-level APIs and languages such as OpenCL and CUDA is difficult, error-prone, and not performance portable. Automatic parallelization and domain-specific languages (DSLs) have been proposed to hide complexity and regain performance portability. We present PENCIL, a platform-neutral intermediate language for accelerator programming and PPCG, a PENCIL-to-OpenCL/CUDA compiler using state-of-the-art polyhedral techniques. PENCIL is a rigorously-defined subset of GNU C99, enriched with additional language constructs, that enables compilers to exploit parallelism and produce highly optimized code when targeting accelerators. PENCIL aims to serve both as a portable implementation language for libraries, and as a target language for DSL compilers. PPCG is a source-to-source polyhedral compiler that extracts a highly efficient data parallel kernel for accelerators from a sequential PENCIL specification. The polyhedral compiler is extended to handle data-dependent control flow, non-affine array accesses, and interprocedural control flow. We present our experience of using PENCIL as an intermediate language for several DSLs including VOBLA (a DSL for basic linear algebra), SpearDE (a DSL for signal processing radar applications) as well as porting several large benchmarks such as SLAMBench, SHOC, Rodinia to PENCIL.
Fri 23 Jun Times are displayed in time zone: (GMT+02:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
|13:40 - 14:30|
Oscar RodriguezJetBrainsLink to publication
|14:30 - 15:20|