用于在集群上反转大规模矩阵的 C+C++ 库

计算科学 线性代数 矩阵 C++
2021-12-14 20:07:40

我需要实现一个非常大的矩阵的矩阵求逆,该矩阵当前超出了我机器的内存限制(不幸的是,我在 32 位机器上运行的内存很少)。我想同时使用几台电脑来获得结果。我正在使用 Linux,并且可以使用 MPI 访问多台机器。

你能推荐一个实现该功能的好 C++ 库吗?如果这不可用,那么任何关于该主题的好文章或算法也会受到赞赏。

目前,我正在阅读以下内容:

1个回答

就像 HighPerformanceMark 已经指出的那样,不需要显式地反转矩阵来求解线性系统。在 Levenberg-Marquardt 算法中,矩阵是正定且对称的,因此,您可以使用共轭梯度法求解线性系统。这避免了计算矩阵的精确逆的需要,并且通常更快且内存占用更少。即使在小型 PC 上(取决于您的矩阵的密集/稀疏程度),用这个解决具有几十万个未知数的线性系统也不应该是一个问题。