Wed 7 Nov 2018 13:30 - 13:52 at Studio 2 - Language Design 1 Chair(s): Eelco Visser

This paper advocates programming high-performance code using partial evaluation. We present a clean-slate programming system with a simple, annotation-based, online partial evaluator that operates on a CPS-style intermediate representation. Our system exposes code generation for accelerators (vectorization/parallelization for CPUs and GPUs) via compiler-known higher-order functions that can be subjected to partial evaluation. This way, generic implementations can be instantiated with target-specific code at compile time.

In our experimental evaluation we present three extensive case studies from image processing, ray tracing, and genome sequence alignment. We demonstrate that using partial evaluation, we obtain high-performance implementations for CPUs and GPUs from one language and one code base in a generic way. The performance of our codes is mostly within 10%, often closer to the performance of multi man-year, industry-grade, manually-optimized expert codes that are considered to be among the top contenders in their fields.

Wed 7 Nov

Displayed time zone: Guadalajara, Mexico City, Monterrey change

13:30 - 15:00
Language Design 1OOPSLA at Studio 2
Chair(s): Eelco Visser Delft University of Technology
13:30
22m
Talk
AnyDSL: A Partial Evaluation Framework for Programming High-Performance Libraries
OOPSLA
Roland Leißa Saarland University, Germany, Klaas Boesche Saarland University, Sebastian Hack Saarland University, Germany, Arsène Pérard-Gayot Saarland University, Germany, Richard Membarth DFKI, Germany, Philipp Slusallek DFKI, Germany, André Müller Johannes Gutenberg University, Bertil Schmidt Johannes Gutenberg University
13:52
22m
Talk
Julia: Dynamism and Performance Reconciled by Design
OOPSLA
Jeff Bezanson Julia Computing, Benjamin Chung Northeastern University, Jiahao Chen Capital One, Stefan Karpinski , Viral B Shah Julia Computing, Jan Vitek Northeastern University, Lionel Zoubritzky École Normale Supérieure
14:15
22m
Talk
GraphIt - A High-Performance Graph DSL
OOPSLA
14:37
22m
Talk
One Tool, Many Languages: Language-Parametric Transformation with Incremental Parametric Syntax
OOPSLA