1 前言
最近正在入门代数求解相关领域,简单来说就是研究$Ax=b$如何求解,只不过这里的$A$是一个大型(上亿阶)稀疏(大量0元素)矩阵。虽然工程实际中用得最多的是迭代法,这里还是先介绍直接求解的相关库
首先,推荐Xiaoye(Sherry) Li
(在美国Lawrence Berkeley National Laboratory
担任Senior Scientist & Group Lead
)在Summer School的PPT,过一遍就大概知道了稀疏矩阵直接求解有哪些要注意的问题。接着就是找文献继续深入了~
2 汇总表
前人做的比较全面的对比:Direct Solvers for Sparse Matrices
这里补充了一些自己找的,稍微整理了一下:
名称 | 名称含义 | 机构 | 求解方法 | 对应矩阵类型 | 网址 | 程序语言 | 个人评分 |
---|---|---|---|---|---|---|---|
HSL | Harwell Subroutine Library | STFC’s Rutherford Appleton Laboratory, UK | Multifrontal | Sym、Sym-pat、Unsym | link | FORTRAN | 👍 |
BCSLIB-EXT | Unknown | Boeing Computer Services, USA | Multifrontal | Sym、Unsym | link | FORTRAN | 👍 |
PSPASES | Parallel SPArse Symmetric dirEct Solver | IBM Corporation and University of Minnesota,USA | Multifrontal | SPD | link | C/FORTRAN | 👍 |
WSMP | Watson Sparse Matrix Package | IBM Corporation,USA | Multifrontal | SPD、Unsym | link | FORTRAN | 👍👍👍👍👍 |
TAUCS | Unknown | Tel-Aviv University,Israel | Left/Multifr. | Sym、Unsym | link | C | 👍👍 |
PARDISO | Parallel Sparse Direct Solver | USI, Lugano,Switzerland | Left-Right looking | Sym-pat | link | FORTRAN | 👍👍👍 |
PaStiX | Parallel Sparse direct Solver | BORDEAUX I UNIVERSITY,France | Left-Right looking | Sym-pat | link | C | 👍👍👍👍 |
UMFPACK | Unknown(Now as a part of SuiteSparse | Texas A&M university,USA | Multifrontal | Unsym | link | FORTRAN | 👍👍 |
SuperLU | Supernodal Low Upper Decomposition | Lawrence Berkeley National Laboratory,USA | Left/Right-looking | Unsym | link | C | 👍👍👍👍👍 |
MUMPS | Multifrontal Massively Parallel Sparse Direct Solver | University of Bordeaux,France | Multifrontal | SPD、Sym-pat、Unsym | link | FORTRAN | 👍👍👍👍 |
STRUMPACK | STRUctured Matrix PACKage | Lawrence Berkeley National Laboratory,USA | Multifrontal | Sym-pat、Unsym | link | C++ | 👍👍👍👍👍 |
3 一些说明
个人评分根据求解库对个人的参考价值来判断,判断标准有:是否开源、性能、可扩展性、代码可读性、相关文档丰富度、程序版本号等
PARDISO(上次更新:2020.11),网页做的很好,
Intel MKL
库中的直接求解模块就用到了它;文献量不多,值得关注PaStiX(上次更新:2021.07),文献较新,测试最大问题规模达10M?,文献值得跟进
MUMPS(上次更新:2021.08),算例最大问题规模10M,推荐(因为是用FORTRAN写的、个人评分减一)
STRUMPACK(上次更新:几天前),很有潜力,采用的是面向对象的C++编程,用到了大量C++11特性,为稀疏及稠密矩阵提供了一系列线性代数操作以及方程求解方法,不仅仅是直接求解库
PSPASES貌似是WSMP的前身,同一个团队开发的,前几年PSPASES把官网的下载渠道给关了,可能是为了保护自己的一些成果吧