The Generalized Matrix Chain Algorithm
arXiv:1804.04021 · doi:10.1145/3168804
Abstract
In this paper, we present a generalized version of the matrix chain algorithm to generate efficient code for linear algebra problems, a task for which human experts often invest days or even weeks of works. The standard matrix chain problem consists in finding the parenthesization of a matrix product that minimizes the number of scalar operations. In practical applications, however, one frequently encounters more complicated expressions, involving transposition, inversion, and matrix properties. Indeed, the computation of such expressions relies on a set of computational kernels that offer functionality well beyond the simple matrix product. The challenge then shifts from finding an optimal parenthesization to finding an optimal mapping of the input expression to the available kernels. Furthermore, it is often the case that a solution based on the minimization of scalar operations does not result in the optimal solution in terms of execution time. In our experiments, the generated code outperforms other libraries and languages on average by a factor of about 9. The motivation for this work comes from the fact that---despite great advances in the development of compilers---the task of mapping linear algebra problems to optimized kernels is still to be done manually. In order to relieve the user from this complex task, new techniques for the compilation of linear algebra expressions have to be developed.
References in corpus (8)
- Expression Templates Revisited: A Performance Analysis of the Current ET Methodology
- A Dual Method for Computing Power Transfer Distribution Factors
- Sparsity-based Correction of Exponential Artifacts
- Some matrix nearness problems suggested by Tikhonov regularization
- Non-linear Associative-Commutative Many-to-One Pattern Matching with Sequence Variables
- A Parallel Implementation of the Ensemble Kalman Filter Based on Modified Cholesky Decomposition
- A Blind Adaptive CDMA Receiver Based on State Space Structures
- Deriving Correct High-Performance Algorithms