Gauss-Seidel 为何比 Jacobi 慢 5 倍?

Measuring Gauss-Seidel loop-carried dependency and fixing it via loop unrolling

Gauss-Seidel 为何比 Jacobi 慢 5 倍?

理论上 Gauss-Seidel 的收敛速度是 Jacobi 的两倍,但实测中它却慢了 4 到 5 倍。Dr. Jean-Christophe Loiseau 通过 OSACA 静态分析揭示,罪魁祸首是循环携带依赖(loop-carried dependency)导致编译器无法向量化。Gauss-Seidel 被锁定在 12 个周期的延迟瓶颈上,而 Jacobi 仅受吞吐量限制。文章进一步探讨为何简单的循环展开(loop unrolling)无法打破这一数学依赖,并暗示需要更深层的数学重构才能释放 Gauss-Seidel 的真正潜力。

Gauss-Seidel 更快的收敛速度完全是以一条编译器无法自行打破的串行化 12 周期每元素依赖链为代价换来的。

同日更多故事

2026-09-16