稀疏 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 某处。
备注:
- 我对有限域的精确解以及使用浮点表示的实数或复数的精确和有界误差解感兴趣。我想有理数的精确解或有界解也很有趣。
- 我对可并行化的解决方案特别感兴趣。
- A 是不固定的,也就是说,你不会因为同一个 A 而得到不同的 b。
我使用和并行化的主要两种算法是 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 天内求解。不幸的是,我从未公布结果!
设 A 为 n x n 稀疏矩阵,由形式为 (i,j,a) 的 m 元组序列表示 --- 索引为 i,j(介于 0 和 n-1 之间),a 为 a基础字段 F.
中的值 a在实践中使用什么算法来求解形式为 Ax = b 的线性方程组?请描述它们,不要只是 link 某处。
备注:
- 我对有限域的精确解以及使用浮点表示的实数或复数的精确和有界误差解感兴趣。我想有理数的精确解或有界解也很有趣。
- 我对可并行化的解决方案特别感兴趣。
- A 是不固定的,也就是说,你不会因为同一个 A 而得到不同的 b。
我使用和并行化的主要两种算法是 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 天内求解。不幸的是,我从未公布结果!