We introduce a new algorithm and software for solving linear equations in symmetric diagonally dominant matrices with non-positive off-diagonal entries (SDDM matrices), including Laplacian matrices. We use pre-conditioned conjugate gradient (PCG) to solve the system of linear equations. Our preconditioner is a variant of the Approximate Cholesky factorization of Kyng and Sachdeva (FOCS 2016). Our factorization approach is simple: we eliminate matrix rows/columns one at a time and update the remaining matrix using sampling to approximate the outcome of complete Cholesky factorization. Unlike earlier approaches, our sampling always maintains a connectivity in the remaining non-zero structure. Our algorithm comes with a tuning parameter that upper bounds the number of samples made per original entry. We implement our algorithm in Julia, providing two versions, AC and AC2, that respectively use 1 and 2 samples per original entry. We compare their single-threaded performance to that of current state-of-the-art solvers Combinatorial Multigrid (CMG), BoomerAMG-preconditioned Krylov solvers from HyPre and PETSc, Lean Algebraic Multigrid (LAMG), and MATLAB's with Incomplete Cholesky Factorization (ICC). Our evaluation uses a broad class of problems, including all large SDDM matrices from the SuiteSparse collection and diverse programmatically generated instances. Our experiments suggest that our algorithm attains a level of robustness and reliability not seen before in SDDM solvers, while retaining good performance across all instances. Our code and data are public, and we provide a tutorial on how to replicate our tests. We hope that others will adopt this suite of tests as a benchmark, which we refer to as SDDM2023. Our solver code is available at: https://github.com/danspielman/Laplacians.jl/ Our benchmarking data and tutorial are available at: https://rjkyng.github.io/SDDM2023/
翻译:我们提出了一种新的算法和软件,用于求解非对角元非正的对角占优对称矩阵(SDDM矩阵,包括拉普拉斯矩阵)中的线性方程组。我们采用预处理共轭梯度法(PCG)求解该线性系统。所提出的预处理器是Kyng与Sachdeva(FOCS 2016)提出的近似Cholesky分解的变体。我们的分解方法简洁:每次消去矩阵的一行/列,并通过采样近似完全Cholesky分解的结果来更新剩余矩阵。与以往方法不同,我们的采样始终维持剩余非零结构中的连通性。该算法包含一个调优参数,用于限制每个原始条目对应的采样次数。我们使用Julia语言实现该算法,提供AC和AC2两个版本,分别对每个原始条目采样1次和2次。我们将它们的单线程性能与当前最先进的求解器——组合多重网格法(CMG)、基于BoomerAMG预处理的HyPre和PETSc中的Krylov求解器、精简代数多重网格法(LAMG)以及MATLAB中带不完全Cholesky分解(ICC)的求解器进行比较。评估涵盖广泛的问题类别,包括SuiteSparse集合中所有大型SDDM矩阵以及各类程序化生成的实例。实验表明,我们的算法在保持所有实例良好性能的同时,达到了SDDM求解器前所未有的稳健性和可靠性水平。代码与数据已公开,并提供了测试复现教程。我们期望该测试套件(命名为SDDM2023)能被业界采纳为基准测试。求解器代码见:https://github.com/danspielman/Laplacians.jl/ 基准测试数据与教程见:https://rjkyng.github.io/SDDM2023/