论文标题

线性方程系统的自适应求解器

An Adaptive Solver for Systems of Linear Equations

论文作者

Sanderson, Conrad, Curtin, Ryan

论文摘要

解决线性方程系统的计算实现通常依赖于基于列以列尺寸格式的密集矩阵的LU分解的单一适合方法。这种求解器通常是借助XGESV在低级Lapack软件中可用的XGESV集合集,目的是利用经过良好测试的例程来减少开发时间。但是,这种直接的方法没有考虑到可以利用的各种矩阵属性,以减少计算工作和/或增加数值稳定性。此外,直接使用Lapack功能对于非专家用户来说可能是错误的,并且导致源代码几乎没有类似的数学表达式。我们描述了一个自适应求解器,该求解器已在用于线性代数的高级Armadillo C ++库的最新版本中实现。该求解器会自动检测给定系统的几种常见属性(带,三角形,对称的正定义),然后通过映射到一组合适的Lapack函数来求解系统,最适合每个属性。求解器还检测到条件差的系统,并通过单数值分解自动寻求解决方案作为后备。我们表明,自适应求解器会导致显着的加速,同时还可以使用户无法使用直接调用对笨重的Lapack功能。

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.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源