解决稀疏线性系统的库


21

有许多不同的库可以解决稀疏的线性方程组,但是我发现很难找出区别。

据我所知,主要有三个软件包: TrilinosPETScIntel MKL。它们都可以做稀疏矩阵求解,它们都很快(据我所知,我还不能在其中任何一个上找到可靠的基准),并且它们都是可并行化的。我找不到的是差异。

那么,那里的不同的稀疏线性系统求解器之间有什么区别呢?

Answers:


29

还有更多的问题,所有问题都有不同的目标和看法。这实际上取决于您要解决的问题。这里是不完整的软件包列表。随时添加更多详细信息。

大型分布式迭代求解器程序包

  • PETSc —围绕Krylov子空间方法且易于在线性求解器之间切换的软件包。重量比同类产品轻得多。
  • Trilinos-针对FEM应用的大量软件包
  • Hypre-与以上两个类似。值得注意的是,它具有非常好的多网格求解器(可以由PETSc下载)。

并行直接求解器程序包

串行直接求解器软件包

  • SuiteSparseUMFPACK是一个非常好的求解器,但是这里还有许多其他特殊用途的求解器。
  • 英特尔数学内核库 —来自英特尔的高质量库;也有并行迭代求解器(但没有大规模并行)。
  • 矩阵模板库 -泛型有时可以使代码更快。

交互式环境(对于非常小的系统,更多)

其他清单


9

MKL不执行分布式并行性(例如MPI),并且对稀疏解算器的支持是基本的,绝对不是其他两个级别的支持。当前,只有一个有意义的基准:稀疏矩阵矢量产品(SpMV)的可扩展性能。由于这是受内存带宽限制的,因此只能将其弄乱。PETSc和Trilinos都可以做到这一点。

真正的区别是哪种编程环境使您的工作效率更高。


因此,几乎可以归结为您是否要使用C或C ++进行工作?
Andrew Spott

它比这开放得多。您当然可以从大多数数值计算语言中调用Trilinos或PETSc(C,Python,C ++和Fortran都是可行的选择,在某种程度上还可以称为MATLAB)。
阿隆·艾玛迪亚

PETSc可以正确处理F90数组:),整个对象模型在Matlab中可用。
Matt Knepley 2011年

1
PETSc和Trilinos在某种程度上也参与了不同的社区。也许您应该首先考虑要解决的问题类型,并且两个工具箱中是否都存在类似问题的现有示例?
阿隆·艾玛迪亚

1
我建议先看一下不同项目的示例,然后再决定。如果您有具体的示例说明哪种系统更适合某个问题,那么这将是一个更易回答的问题。否则,我们只会开始在我的职业生涯中进行的宗教战争。
aterrel 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.