English

An Adaptive Solver for Systems of Linear Equations

Mathematical Software 2021-01-13 v2

Abstract

Computational implementations for solving systems of linear equations often rely on a one-size-fits-all approach based on LU decomposition of dense matrices stored in column-major format. Such solvers are typically implemented with the aid of the xGESV set of functions available in the low-level LAPACK software, with the aim of reducing development time by taking advantage of well-tested routines. However, this straightforward approach does not take into account various matrix properties which can be exploited to reduce the computational effort and/or to increase numerical stability. Furthermore, direct use of LAPACK functions can be error-prone for non-expert users and results in source code that has little resemblance to originating mathematical expressions. We describe an adaptive solver that we have implemented inside recent versions of the high-level Armadillo C++ library for linear algebra. The solver automatically detects several common properties of a given system (banded, triangular, symmetric positive definite), followed by solving the system via mapping to a set of suitable LAPACK functions best matched to each property. The solver also detects poorly conditioned systems and automatically seeks a solution via singular value decomposition as a fallback. We show that the adaptive solver leads to notable speedups, while also freeing the user from using direct calls to cumbersome LAPACK functions.

Keywords

Cite

@article{arxiv.2007.11208,
  title  = {An Adaptive Solver for Systems of Linear Equations},
  author = {Conrad Sanderson and Ryan Curtin},
  journal= {arXiv preprint arXiv:2007.11208},
  year   = {2021}
}
R2 v1 2026-06-23T17:18:19.068Z