md_poly: A Performance-Portable Polyhedral Compiler Based on Multi-Dimensional Homomorphisms
University of Muenster, Germany
10th International Workshop on Polyhedral Compilation Techniques (IMPACT’20), 2020
@article{rasch2020mdpoly,
title={md_poly: A Performance-Portable Polyhedral Compiler Based on Multi-Dimensional Homomorphisms},
author={Rasch, Ari and Schulze, Richard and Gorlatch, Sergei},
year={2020}
}
Polyhedral compilers automatically parallelize sequential programs for multi- and many-core architectures, such as CPU and GPU. However, parallel code generated by state-ofthe-art polyhedral compilers often lacks performance portability, because the existing compilers are usually optimized toward only a single particular architecture (e.g., GPU). Moreover, even on their target architecture, polyhedral compilers sometimes fail to reach high performance, because they often miss important optimizations, e.g., efficiently exploiting fast memory resources. We present our work-in-progress results for md_poly – a novel polyhedral compiler that generates portable highperformance code from sequential C programs with perfect loop nests and rectangular iteration domains. In contrast to the existing polyhedral compilers, md_poly relies on the code generation approach for Multi-Dimensional Homomorphisms (MDHs): we show that the internal program representation of polyhedral compilers (a.k.a. polyhedral model) can be automatically transformed into an equivalent MDH representation; this representation is suitable for generating highperformance program code that is performance portable over different architectures. Our preliminary experimental comparison against PPCG with two benchmarks – Gaussian Convolution and Matrix Multiplication – shows encouraging results: speedups up to 7x on Intel CPU and 3x on NVIDIA GPU on real-world input sizes from deep learning.
January 19, 2020 by hgpu