Array Program Transformation with Loo.py by Example: High-Order Finite Elements
University of Illinois at Urbana-Champaign, Urbana, IL, USA
arXiv:1604.08501 [cs.PL], (13 Apr 2016)
@article{klockner2016array,
title={Array Program Transformation with Loo.py by Example: High-Order Finite Elements},
author={Klockner, Andreas and Wilcox, Lucas C. and Warburton, T.},
year={2016},
month={apr},
archivePrefix={"arXiv"},
primaryClass={cs.PL}
}
To concisely and effectively demonstrate the capabilities of our program transformation system Loo.py, we examine a transformation path from two real-world Fortran subroutines as found in a weather model to a single high-performance computational kernel suitable for execution on modern GPU hardware. Along the transformation path, we encounter kernel fusion, vectorization, prefetching, parallelization, and algorithmic changes achieved by mechanized conversion between imperative and functional/substitution-based code, among a number more. We conclude with performance results that demonstrate the effects and support the effectiveness of the applied transformations.
April 29, 2016 by hgpu