哪个是可用于求解稀疏线性方程组的最佳子程序

计算科学 线性求解器 稀疏矩阵 英特尔-mkl
2021-12-10 03:43:06

我正在尝试求解线性方程组:为此,我目前正在使用英特尔 MKL Pardiso 求解器。的阶数在及以下时效果很好。在此之上,求解器给出了错误的答案(也许我给出了在调用求解器之前需要设置的错误参数值)。的维度需要分别高达 ( ) 和 ( )。我的程序是 Fortran 固定格式,我使用的是 Intel Visual Fortran 编译器。AX=BA13500×13500AB15106×1510615106×6

使用稀疏线性求解器的原因:

a)矩阵主要是稀疏的。我附上了用于可视化的矩阵的形态,其中黄色像素代表非零值。AA

b) 我之前使用的是DGELSDLAPACK 子程序,但它花费了很多时间。稀疏求解器比非稀疏求解器快约 180 倍。此外,Pardiso 求解器的内存消耗非常少,因为它适用于矩阵的 CSR 格式。

我的问题是:如何为 Pardiso 求解器设置参数,或者是否有任何其他我可以使用的预设要求较少的求解器。

目前我在 Windows 10 上工作。系统规格:

Intel Xeon E 系列处理器 32 核,64 GB RAM。

图片信息:

A矩阵形态,共有元素。135×135

黄色像素:666 个。矩阵尺寸为(最简单的情况)。请注意,随着尺寸的增加,矩阵结构完全保持相同的时尚,A 矩阵也是非对称的。 135×135在此处输入图像描述

谢谢

1个回答

对于单台机器上的(稀疏)直接求解器来说,大小为 15M x 15M 的矩阵可能太大了——这将花费太多时间和内存。如果您想使用直接求解器,您可以尝试并行稀疏直接求解器,例如 MUMPS 或 SuperLU-dist,它们都可以通过 PETSc 方便地调用。

还可以选择使用迭代求解器。如果您了解这些线性系统的来源,并且可以提出一个好的预处理器,则尤其如此。我关于如何选择求解器和预处理器的想法可以在第 34-38 课中找到:http: //www.math.colostate.edu/~bangerth/videos.html