Bastian Hagedorn – High Performance Stencil Code Generation with Lift, 11.04.2018
by Rob Stewart • March 13, 2018 • DSG Research Seminars: Logic and Programming Languages
Title: High Performance Stencil Code Generation with Lift
Speaker: Bastian Hagedorn, University of Münster
13:15, EM G.61.
Abstract
Stencil computations are widely used from physical simulations to
machine-learning. They are embarrassingly parallel and are commonly
executed on modern parallel systems such as multi-core CPUs, Graphic
Processing Units (GPUs). Although stencil computations have been
extensively studied, optimizing them for increasingly diverse and
ever-changing hardware remains challenging even for performance
experts. Domain Specific Languages (DSLs) have raised the programming
abstraction and offer good performance. However, this abstraction
places the burden of optimizing stencil codes for the targeted
architectures on DSL implementers who have to write full-fledged
parallelizing compilers and optimizers for every architecture.
Lift has recently emerged as a promising approach to achieve
performance portability. It is based on a small set of reusable
parallel primitives that DSL writers can build upon. Lift’s key
novelty is in its encoding of optimizations as a system of extensible
rewrite rules which are used to explore the optimizationSo far, Lift
has focused on linear algebra operations and it it is an open question
if this approach is applicable for other domains.
In this talk, I demonstrate how complex multidimensional stencil codes
and optimizations such as tiling are expressible using compositions of
simple 1D Lift primitives. This allows us to build an elegant
optimizing compiler using rewriting without requiring specialized
domain- or architecture-specific solutions. By leveraging existing
Lift primitives and optimizations, we only require the addition of two
primitives and one rewrite rule to do so. Our results show that this
approach outperforms existing compiler approaches and hand-tuned
codes.