稀疏 Ax = b 系统在实践中是如何解决的?

How are sparse Ax = b systems solved in practice?

设 A 为 n x n 稀疏矩阵,由形式为 (i,j,a) 的 m 元组序列表示 --- 索引为 i,j(介于 0 和 n-1 之间),a 为 a基础字段 F.

中的值 a

在实践中使用什么算法来求解形式为 Ax = b 的线性方程组?请描述它们,不要只是 link 某处。

备注:

我使用和并行化的主要两种算法是 Wiedemann algorithm and the Lanczos algorithm(及其用于 GF(2) 计算的块变体),这两种算法都比结构化高斯消元法更好。

LaMacchia-Odlyzo 论文(关于 Lanczos 算法的论文)将告诉您需要了解的内容。这些算法涉及将稀疏矩阵重复乘以一系列向量。为了有效地做到这一点,您需要使用 right data structure(链表)使矩阵向量乘法时间与矩阵中非零值的数量(即稀疏性)成正比。

这些算法的并行化是微不足道的,但优化将取决于您的系统架构。矩阵向量乘法的并行化是通过将矩阵分成行块(每个处理器得到一个块)来完成的,每个行块分别与向量相乘。然后将结果组合起来得到新的向量。

我已经广泛地进行了这些类型的计算。打破 RSA-129 factorisation 的原作者在 16,384 处理器 MasPar 上使用结构化高斯消元法花费了 6 周的时间。在同一台机器上,我与 Arjen Lenstra(作者之一)一起使用 Wiedemann 模块在 4 天内求解矩阵,而 Lanczos 模块则在 1 天内求解。不幸的是,我从未公布结果!