Loo.py: From Fortran to performance via transformation and substitution rules

Andreas Klöckner
DOI: https://doi.org/10.1145/2774959.2774969
2015-05-16
Abstract:A large amount of numerically-oriented code is written and is being written in legacy languages. Much of this code could, in principle, make good use of data-parallel throughput-oriented computer architectures. <a class="link-external link-http" href="http://Loo.py" rel="external noopener nofollow">this http URL</a>, a transformation-based programming system targeted at GPUs and general data-parallel architectures, provides a mechanism for user-controlled transformation of array programs. This transformation capability is designed to not just apply to programs written specifically for <a class="link-external link-http" href="http://Loo.py" rel="external noopener nofollow">this http URL</a>, but also those imported from other languages such as Fortran. It eases the trade-off between achieving high performance, portability, and programmability by allowing the user to apply a large and growing family of transformations to an input program. These transformations are expressed in and used from Python and may be applied from a variety of settings, including a pragma-like manner from other languages.
Programming Languages,Computational Engineering, Finance, and Science,Mathematical Software
What problem does this paper attempt to address?