Summary of Matrix Types Available In PETSc#
| Format | Matrix Types | Constructor | External Packages | Details | 
|---|---|---|---|---|
| CSR | Compressed sparse row | |||
| Intel oneAPI MKL | OpenMP support | |||
| SIMD acceleration | ||||
| Vectorized version | ||||
| NVIDIA cuSPARSE library | NVIDIA GPU acceleration | |||
| Kokkos | GPU acceleration | |||
| Constant row length | Vectorized version | |||
| Multiple applications of single  | Commonly used for identical interpolations on each component of a multi-component vector | |||
| Kronecker product of sparse matrix \(A\); \(I \otimes S + A \otimes T\) | ||||
| Sliced Ellpack | SIMD and GPU acceleration | |||
| Block CSR | Block compressed sparse row | |||
| Symmetric Block CSR | Upper triangular compressed sparse row | |||
| Dense | Row oriented storage | |||
| 
 | Elemental by Jack Poulson | Block cyclic storage | ||
| ScaLAPACK | Block cyclic storage | |||
| NVIDIA GPU Acceleration | ||||
| 
 | 
 | Provides only matrix-vector products | ||
| User-provided operations | 
 | |||
| Low-rank updates | 
 | 
 | limited-memory BFGS style matrices | |
| \(A + UCV^T\) | ||||
| FFT | FFTW | |||
| 
 | NVIDIA’s CuFFT | NVIDIA GPUs | ||
| Hierarchical | Htool | |||
| \(\mathcal H^2\) matrices | ||||
| Transpose, \(A^T\), virtual | ||||
| Hermitian Transpose, \(A^H\), virtual | ||||
| Normal, \(A^TA\), virtual | ||||
| Hermitian Normal, \(A^HA\), virtual | ||||
| Schur complement | ||||
| Sub-matrix, virtual | Provides  | |||
| 
 | For use in matrix assembly | |||
| Nested matrix | ||||
| Scatter operator | ||||
| Centering operator | 
 | \(I - \frac{1}{N}e e^T\), \(e=[1,\dots,1]^T\) | ||
| Block matrix |