我正在寻找一个大矩阵的逆矩阵,常见大小为 1000 x 1000,但有时超过 100000 x 100000(由于时间和内存,目前正在失败)。我知道正常的情绪是“不要采取相反的方式,找到其他方法来做到这一点”,但目前这是不可能的。其原因是由于使用了期望得到矩阵逆的软件。(注意:我正在研究改变这种情况的方法,但这需要很长时间)
目前我们正在使用数值复制的 LU 分解方法,我目前正在测试特征库。eigen 库似乎更稳定且速度更快,但我仍处于准确性测试阶段。我快速浏览了其他库,例如 ATLAS 和 LAPACK,但尚未对这些库进行任何实质性测试。
似乎 eigen 库不使用并发方法来计算逆(尽管对于逆的 LU 分解部分确实如此),据我所知,ATLAS 和 LAPACK 在这个限制方面是相似的。(我目前正在使用 openMP 和不使用 openMP 测试 eigen 的速度差异。)
第一个问题是谁能解释如何通过并行化优化矩阵求逆。在这里找到了一篇讲矩阵求逆并行算法的文章,但是没看懂。这篇文章似乎在谈论另一种方法?我也不确定 scaLAPACK 或 PETSc 是否有用?
第二个问题,我阅读了这篇关于使用 GPU 提高性能的文章,但我从未为 GPU 编码,因此不知道要传达什么,但底部的图表看起来相当惊人。这怎么可能,如果这是真的,我该如何开始实施这样的事情。
我还发现了这篇文章,还没有时间通读以了解它,但它似乎很有希望,因为内存是我们软件的当前问题。
有关这些文章或一般问题的任何信息都会有很大帮助。如果这个问题看起来含糊不清,我再次道歉,如有必要,我会尝试扩展更多内容。