Parallel GPU-Accelerated Randomized Construction of Approximate Cholesky Preconditioners
Tianyu Liang, Chao Chen, Yotam Yaniv, Hengrui Luo, David Tench, Xiaoye S. Li, Aydin Buluc, James Demmel
TL;DR
The paper addresses efficient preconditioning for large sparse Laplacian systems by introducing ParAC, a parallel, randomized incomplete Cholesky method. It combines dynamic dependency tracking with a randomized fill-in strategy to expose substantial parallelism on both CPU and GPU, while avoiding costly nested-dissection preprocessing. The CPU implementation uses a left-looking approach with a preallocated triangular buffer, whereas the GPU employs right-looking updates with a persistent kernel and a block-based hash map to manage irregular fill-ins. Experimental results show competitive performance against HyPre, AmgX, and cuSPARSE ichol across diverse matrices, with notable speedups and robustness to changing sparsity patterns, highlighting practical impact for PDEs, spectral graph tasks, and graph-based learning.
Abstract
We introduce a parallel algorithm to construct a preconditioner for solving a large, sparse linear system where the coefficient matrix is a Laplacian matrix (a.k.a., graph Laplacian). Such a linear system arises from applications such as discretization of a partial differential equation, spectral graph partitioning, and learning problems on graphs. The preconditioner belongs to the family of incomplete factorizations and is purely algebraic. Unlike traditional incomplete factorizations, the new method employs randomization to determine whether or not to keep fill-ins, i.e., newly generated nonzero elements during Gaussian elimination. Since the sparsity pattern of the randomized factorization is unknown, computing such a factorization in parallel is extremely challenging, especially on many-core architectures such as GPUs. Our parallel algorithm dynamically computes the dependency among row/column indices of the Laplacian matrix to be factorized and processes the independent indices in parallel. Furthermore, unlike previous approaches, our method requires little pre-processing time. We implemented the parallel algorithm for multi-core CPUs and GPUs, and we compare their performance to other state-of-the-art methods.
