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(每个原始条目采样1次)和AC2(每个原始条目采样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/