Visible to the public AnyDSL: A Partial Evaluation Framework for Programming High-Performance Libraries

TitleAnyDSL: A Partial Evaluation Framework for Programming High-Performance Libraries
Publication TypeJournal Article
Year of Publication2018
AuthorsLeißa, Roland, Boesche, Klaas, Hack, Sebastian, Pérard-Gayot, Arsène, Membarth, Richard, Slusallek, Philipp, Müller, André, Schmidt, Bertil
JournalProc. ACM Program. Lang.
Volume2
Pagination119:1-119:30
Date PublishedOctober 2018
ISSN2475-1421
Keywordsclean slate, Collaboration, gpu computing, high-performance, Human Behavior, human factors, library design, Metrics, parallelization, partial evaluation, policy, Policy Based Governance, policy governance, pubcrawl, resilience, Resiliency, vectorization
Abstract

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.

URLhttps://dl.acm.org/doi/10.1145/3276489
DOI10.1145/3276489
Citation Keyleisa_anydsl:_2018