稀疏线性方程组直接求解库学习

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把官网的下载渠道给关了,可能是为了保护自己的一些成果吧

Author: zcp
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source zcp !
评论
 Previous
关于并行程序调试
大规模并行程序调试及优化 1 前言从串行到并行,需要多考虑很多东西(并行体系结构、通信、负载均衡),有些事也变得更困难了,最典型的一个例子就是程序的调试想象如下场景,我刚用MPI写了个程序,运行发现有问题,可能出现的错误种类有
Next 
可转债入门笔记
相关网站: 集思录 1 入门篇 可转债,全称为“可转换公司债券”,是可以转换成公司股票的债券,债权+期权。其持有人可以选择持有债券到期,获取公司还本付息;也可以选择在约定的时间内转换成股票,享受股利分配或资本增值。 法律规定
  TOC