# 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
| Block Jacobi | `PCBJACOBI` | `MATAIJ`, `MATBAIJ`, `MATSBAIJ` | — | X | X
| SOR | `PCSOR` | `MATAIJ`, `MATSEQDENSE`, `MATSEQSBAIJ` | — |  | X
| Point Block SOR |  | `MATSEQBAIJ` (only for `bs` = 2,3,4,5) | — |  | X
| Additive Schwarz | `PCASM` | `MATAIJ`, `MATBAIJ`, `MATSBAIJ` | — | 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
Matrix Free | Infrastructure | `PCSHELL` | All | — | X | X
Multigrid | Infrastructure | `PCMG` | All | — | X | X
| Geometric |  | All | — | X | X
| Smoothed Aggregation | `PCGAMG` | `MATAIJ` | — | X | X
| Structured Geometric | `PCPFMG` | `MATHYPRESTRUCT` | hypre | X |
| Classical Algebraic | `PCHYPRE`, `PCML` | `MATAIJ` | BoomerAMG/hypre, ML/Trilinos | X |
| Domain Decomposition | `PCHPDDM` | `MATAIJ`, `MATBAIJ`, `MATSBAIJ`, `MATIS` | HPDDM | X | X
Physics-based Splitting | Relaxation & Schur Complement | `PCFIELDSPLIT` | `MATAIJ`, `MATBAIJ`, `MATNEST` | — | X | X
| Least Squares Commutator | `PCLSC` | `MATSCHURCOMPLEMENT` | — | 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

## 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` | MUMPS | X | X
|  |  | `MATSEQAIJ` | ESSL |  |
|  |  | `MATSEQAIJ` | UMPFPACK (SuiteSparse) |  | X
|  |  | `MATSEQAIJ` | KLU (SuiteSparse) |  | X
|  |  | `MATSEQAIJ` | LUSOL |  |
|  |  | `MATSEQAIJ`, `MATSEQBAIJ` | MKL Pardiso |  | X
|  |  | `MATMPIAIJ`, `MATMPIBAIJ` | MKL CPardiso | X | X
|  |  | `MATDENSE` | Elemental | X | X
Direct Cholesky | Cholesky | `PCCHOLESKY` | `MATSEQAIJ`, `MATSEQSBAIJ` | — |  | X
|  |  | `MATSBAIJ` | PaStiX | X | X
|  |  | `MATSBAIJ` | MUMPS | X | X
|  |  | `MATSEQAIJ`, `MATSEQSBAIJ` | CHOLMOD (SuiteSparse) |  | X
|  |  | `MATDENSE` | Elemental | X | X
|  |  | `MATSEQSBAIJ` | MKL Pardiso |  |
|  |  | `MATMPIAIJ`, `MATMPIBAIJ` | MKL CPardiso | X |
Direct QR | QR |  | MATLAB | MATLAB |  |
| 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
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
Bi-Conjugate Gradient | `KSPBICG` | — | X | X
Stabilized Bi-Conjugate Gradient | `KSPBCGS` | — | X | X
Transpose-free QMR | `KSPTFQMR` | — | 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

GPU Support Roadmap Summary of Nonlinear Solvers Available In PETSc