Skip to main content
`Ctrl`+`K`

# Summary of Sparse Linear Solvers Available In PETSc

## Preconditioners

| Algorithm | Associated Type | Matrix Types | External Packages | Parallel | Complex
--- | --- | --- | --- | --- | --- | ---
Generic | Jacobi | `PCJACOBI` | `MATAIJ`, `MATBAIJ`, `MATSBAIJ`, `MATDENSE` | — | X | X
| Point Block Jacobi | `PCPBJACOBI` | `MATAIJ`, `MATBAIJ`, `MATSBAIJ`, `MATKAIJ`, `MATMPISELL`, `MATIS` | — | X | X
| Variable Point Block Jacobi | `PCPBJACOBI` | `MATAIJ`, `MATBAIJ`, `MATSBAIJ` | — | X | X
| Block Jacobi | `PCBJACOBI` | `MATAIJ`, `MATBAIJ`, `MATSBAIJ` | — | X | X
| SOR | `PCSOR` | `MATAIJ`, `MATSEQDENSE`, `MATSEQSBAIJ` | — | X | X
| Point Block SOR |  | `MATSEQBAIJ` (only for `bs` = 2,3,4,5) | — | X | X
| Kaczmarz | `PCKACZMARZ` | `MATAIJ` | — | X | X
| Additive Schwarz | `PCASM` | `MATAIJ`, `MATBAIJ`, `MATSBAIJ` | — | X | X
| Vanka/overlapping patches | `PCPATCH` | `MATAIJ` | — | X | X
| Deflation | `PCDEFLATION` | All | — | X | X
Incomplete | ILU | `PCILU` | `MATSEQAIJ`, `MATSEQBAIJ` | — |  | X
| ILU with drop tolerance | `PCILU` | `MATSEQAIJ` | SuperLU Sequential ILU solver |  | X
|  | `PCILU` | `MATAIJ` | Euclid/hypre (`PCHYPRE`) | X |
| ICholesky | `PCICC` | `MATSEQAIJ`, `MATSEQBAIJ`, `MATSEQSBAIJ` | — |  | X
| Algebraic recursive multilevel | `PCPARMS` | `MATSEQAIJ` | pARMS |  | X
Matrix Free | Infrastructure | `PCSHELL` | All | — | X | X
Multigrid | Infrastructure | `PCMG` | All | — | X | X
| Geometric |  | All | — | X | X
| Smoothed Aggregation | `PCGAMG` | `MATAIJ` | — | X | X
| Smoothed Aggregation (ML) | `PCML` | `MATAIJ` | ML/Trilinos | X | X
| Structured Geometric | `PCPFMG`, `PCSYSPFMG`, `PCSMG` | `MATHYPRESTRUCT` | hypre | X |
| Classical Algebraic | `PCHYPRE`, `PCAMGX` | `MATAIJ` | BoomerAMG/hypre, AmgX | X |
| Multi-group MG | `PCHMG` | `MATAIJ` | — | X | X
| Domain Decomposition | `PCHPDDM` | `MATAIJ`, `MATBAIJ`, `MATSBAIJ`, `MATIS` | HPDDM | X | X
Hierarchical matrices | \(\mathcal H^2\) | `PCH2OPUS` | `MATHTOOL`, `MATH2OPUS` | H2OPUS | X |
Physics-based Splitting | Relaxation & Schur Complement | `PCFIELDSPLIT` | `MATAIJ`, `MATBAIJ`, `MATNEST` | — | X | X
| Galerkin composition | `PCGALERKIN` | Any | — | X | X
| Additive/multiplicative | `PCCOMPOSITE` | Any | — | X | X
| Least Squares Commutator | `PCLSC` | `MATSCHURCOMPLEMENT` | — | X | X
Parallel transformation | Redistribution | `PCREDISTRIBUTE` | `MATAIJ` | — | X | X
| Telescoping communicator | `PCTELESCOPE` | `MATAIJ` | — | X | X
| Distribute for MPI | `PCMPI` | `MATAIJ` | — | X | X
Approximate Inverse | AIV | `PCHYPRE`, `PCSPAI` | `MATAIJ` | Parasails/hypre, SPAI | X |
Substructuring | Balancing Neumann-Neumann | `PCNN` | `MATIS` | — | X | X
| Balancing Domain Decomposition | `PCBDDC` | `MATIS` | — | X | X
| 2-level Schwarz wire basket | `PCEXOTIC` | `MATAIJ` | — | X | X

## Direct Solvers

| Algorithm | Associated Type | Matrix Types | External Packages | Parallel | Complex
--- | --- | --- | --- | --- | --- | ---
Direct LU | LU | `PCLU` | `MATSEQAIJ`, `MATSEQBAIJ` | — |  | X
|  |  | `MATSEQAIJ` | MATLAB |  | X
|  |  | `MATAIJ` | PaStiX | X | X
|  |  | `MATAIJ` | SuperLU | X | X
|  |  | `MATAIJ`, `MATBAIJ`, `MATSEQSELL`, `MATDENSE`, `MATNEST` | MUMPS | X | X
|  |  | `MATSEQAIJ` | ESSL |  |
|  |  | `MATSEQAIJ` | UMFPACK (SuiteSparse) |  | X
|  |  | `MATSEQAIJ` | KLU (SuiteSparse) |  | X
|  |  | `MATSEQAIJ` | LUSOL |  |
|  |  | `MATSEQAIJ`, `MATSEQBAIJ` | MKL PARDISO |  | X
|  |  | `MATMPIAIJ`, `MATMPIBAIJ` | MKL Cluster PARDISO | X | X
|  |  | `MATDENSE` | Elemental | X | X
Direct Cholesky | Cholesky | `PCCHOLESKY` | `MATSEQAIJ`, `MATSEQSBAIJ` | — |  | X
|  |  | `MATSBAIJ` | PaStiX | X | X
|  |  | `MATAIJ`, `MATSBAIJ`, `MATDENSE`, `MATNEST` | MUMPS | X | X
|  |  | `MATSEQAIJ`, `MATSEQSBAIJ` | CHOLMOD (SuiteSparse) |  | X
|  |  | `MATDENSE` | Elemental | X | X
|  |  | `MATSEQSBAIJ` | MKL PARDISO |  |
|  |  | `MATMPIAIJ`, `MATMPIBAIJ` | MKL CPardiso | X |
Direct SVD | Singular value decomposition | `PCSVD` | Any | — | X | X
Direct QR | QR | `PCQR` | `MATSEQAIJ` | SuiteSparse QR |  |
| XXt and XYt |  | `MATAIJ` | — | X |

## Krylov Methods

Algorithm | Associated Type | External Packages | Parallel | Complex
--- | --- | --- | --- | ---
Richardson | `KSPRICHARDSON` | — | X | X
Chebyshev | `KSPCHEBYSHEV` | — | X | X
GMRES | `KSPGMRES` | — | X | X
Flexible GMRES | `KSPFGMRES` | — | X | X
LGMRES | `KSPLGMRES` | — | X | X
Deflated GMRES | `KSPDGMRES` | — | X |
Two-stage with least squares residual minimization | `KSPTSIRM` | — | X | X
Conjugate Gradient | `KSPCG` | — | X | X
Conjugate Gradient Squared | `KSPCGS` | — | X | X
Conjugate Gradient for Least Squares | `KSPCGLS` | — | X | X
Conjugate Gradient on Normal Equations | `KSPCGNE` | — | X | X
Nash Conjugate Gradient with trust region constraint | `KSPNASH` | — | X | X
Conjugate Gradient with trust region constraint | `KSPSTCG` | — | X | X
Gould et al Conjugate Gradient with trust region constraint | `KSPGLTR` | — | X | X
Steinhaug Conjugate Gradient with trust region constraint | `KSPQCG` | — | X | X
Left Conjugate Direction | `KSPLCD` | — | X | X
Bi-Conjugate Gradient | `KSPBICG` | — | X | X
Stabilized Bi-Conjugate Gradient | `KSPBCGS` | — | X | X
Improved Stabilized Bi-Conjugate Gradient | `KSPIBCGS` | — | X | X
Transpose-free QMR | `KSPTFQMR` | — | X | X
Transpose-free variant of QMR developed by Tony Chan | `KSPTCQMR` | — | X | X
QMR BiCGStab | `KSPQMRCGS` | — | X | X
Flexible Conjugate Gradients | `KSPFCG` | — | X | X
Flexible stabilized Bi-Conjugate Gradients | `KSPFBCGS` | — | X | X
Flexible stabilized Bi-Conjugate Gradients with fewer reductions | `KSPFBCGSR` | — | X | X
Stabilized Bi-Conjugate Gradients with length \(\ell\) recurrence | `KSPBCGSL` | — | X | X
Conjugate Residual | `KSPCR` | — | X | X
Generalized Conjugate Residual | `KSPGCR` | — | X | X
Generalized Conjugate Residual (with inner normalization and deflated restarts) | `KSPHPDDM` | HPDDM | X | X
Minimum Residual | `KSPMINRES` | — | X | X
LSQR | `KSPLSQR` | — | X | X
SYMMLQ | `KSPSYMMLQ` | — | X | X
FETI-DP (reduction to dual-primal sub-problem) | `KSPFETIDP` | — | X | X
Gropp’s overlapped reduction pipelined Conjugate Gradient | `KSPGROPPCG` | — | X | X
Pipelined Conjugate Gradient | `KSPPIPECG` | — | X | X
Pipelined Conjugate Gradient with residual replacement | `KSPPIPECGRR` | — | X | X
Pipelined depth \(\ell\) Conjugate Gradient | `KSPPIPELCG` | — | X | X
Pipelined predict-and-recompute Conjugate Gradient | `KSPPIPEPRCG` | — | X | X
Pipelined Conjugate Gradient over iteration pairs | `KSPPIPECG2` | — | X | X
Pipelined flexible Conjugate Gradient | `KSPPIPEFCG` | — | X | X
Pipelined stabilized Bi-Conjugate Gradients | `KSPPIPEBCGS` | — | X | X
Pipelined Conjugate Residual | `KSPPIPECR` | — | X | X
Pipelined flexible GMRES | `KSPPIPEFGMRES` | — | X | X
Pipelined Generalized Conjugate Residual | `KSPPIPEGCR` | — | X | X
Pipelined GMRES | `KSPPGMRES` | — | X | X