Automatic Generation of Efficient Linear Algebra Programs
2020 (English)In: PASC '20: Proceedings of the Platform for Advanced Scientific Computing Conference, Association for Computing Machinery (ACM), 2020, article id 1Conference paper, Published paper (Refereed)
Abstract [en]
The level of abstraction at which application experts reason about linear algebra computations and the level of abstraction used by developers of high-performance numerical linear algebra libraries do not match. The former is conveniently captured by high-level languages and libraries such as Matlab and Eigen, while the latter expresses the kernels included in the BLAS and LAPACK libraries. Unfortunately, the translation from a high-level computation to an efficient sequence of kernels is a task, far from trivial, that requires extensive knowledge of both linear algebra and high-performance computing. Internally, almost all high-level languages and libraries use efficient kernels; however, the translation algorithms are too simplistic and thus lead to a suboptimal use of said kernels, with significant performance losses. In order to both achieve the productivity that comes with high-level languages, and make use of the efficiency of low level kernels, we are developing Linnea, a code generator for linear algebra problems. As input, Linnea takes a high-level description of a linear algebra problem and produces as output an efficient sequence of calls to high-performance kernels. In 25 application problems, the code generated by Linnea always outperforms Matlab, Julia, Eigen and Armadillo, with speedups up to and exceeding 10×.
Place, publisher, year, edition, pages
Association for Computing Machinery (ACM), 2020. article id 1
Keywords [en]
Code generation, Linear algebra
National Category
Computer Sciences
Identifiers
URN: urn:nbn:se:umu:diva-197864DOI: 10.1145/3394277.3401836Scopus ID: 2-s2.0-85090146762ISBN: 9781450379939 (electronic)OAI: oai:DiVA.org:umu-197864DiVA, id: diva2:1681838
Conference
PASC '20: 7th Annual Platform for Advanced Scientific Computing Conference, Geneva, Switzerland, June 29 - July 1, 2020
2022-07-072022-07-072023-11-10Bibliographically approved