Skip to main content
`Ctrl`+`K`

# MATSOLVERSTRUMPACK

“strumpack” - A solver package providing a direct sparse solver (PCLU) and a preconditioner (PCILU) using low-rank compression via the external package STRUMPACK https://portal.nersc.gov/project/sparse/strumpack/master. Use `./configure --download-strumpack --download-metis` to have PETSc installed with STRUMPACK.

For full functionality, add `--download-slate --download-magma --download-parmetis --download-ptscotch --download-zfp --download-butterflypack`. SLATE provides GPU support in the multi-GPU setting, providing ScaLAPACK functionality but with GPU acceleration. MAGMA can optionally be used for on node GPU support instead cuBLAS/cuSOLVER, and performs slightly better. ParMETIS and PTScotch can be used for parallel fill-reducing ordering. ZFP is used for floating point compression of the sparse factors (LOSSY or LOSSLESS compression). ButterflyPACK is used for HODLR (Hierarchically Off-Diagonal Low Rank) and HODBF (Hierarchically Off-Diagonal Butterfly) compression of the sparse factors.

## Options Database Keys

- -mat_strumpack_verbose - Enable verbose output

- -mat_strumpack_compression - Type of rank-structured compression in sparse LU factors (choose one of) NONE HSS BLR HODLR BLR_HODLR ZFP_BLR_HODLR LOSSLESS LOSSY

- -mat_strumpack_compression_rel_tol - Relative compression tolerance, when using `-pctype ilu`

- -mat_strumpack_compression_abs_tol - Absolute compression tolerance, when using `-pctype ilu`

- -mat_strumpack_compression_min_sep_size - Minimum size of separator for rank-structured compression, when using `-pctype ilu`

- -mat_strumpack_compression_leaf_size - Size of diagonal blocks in rank-structured approximation, when using `-pctype ilu`

- -mat_strumpack_compression_lossy_precision - Precision when using lossy compression [1-64], when using `-pctype ilu`, compression LOSSY (requires ZFP support)

- -mat_strumpack_compression_butterfly_levels - Number of levels in the hierarchically off-diagonal matrix for which to use butterfly, when using `-pctype ilu`, (BLR_)HODLR compression (requires ButterflyPACK support)

- -mat_strumpack_gpu - Enable GPU acceleration in numerical factorization (not supported for all compression types)

- -mat_strumpack_colperm <TRUE> - Permute matrix to make diagonal nonzeros

- -mat_strumpack_reordering <METIS> - Sparsity reducing matrix reordering (choose one of) NATURAL METIS PARMETIS SCOTCH PTSCOTCH RCM GEOMETRIC AMD MMD AND MLF SPECTRAL

- -mat_strumpack_geometric_xyz <1,1,1> - Mesh x,y,z dimensions, for use with GEOMETRIC ordering

- -mat_strumpack_geometric_components <1> - Number of components per mesh point, for geometric nested dissection ordering

- -mat_strumpack_geometric_width <1> - Width of the separator of the mesh, for geometric nested dissection ordering

- -mat_strumpack_metis_nodeNDP - Use METIS_NodeNDP instead of METIS_NodeND, for a more balanced tree

## Notes

Recommended use is 1 MPI process per GPU.

Use `-pc_type lu` `-pc_factor_mat_solver_type strumpack` to use this as an exact (direct) solver.

Use `-pc_type ilu` `-pc_factor_mat_solver_type strumpack` to enable low-rank compression (i.e, use as a preconditioner), by default using block low rank (BLR).

Works with `MATAIJ` matrices

HODLR, BLR_HODBF and ZFP_BLR_HODLR compression require STRUMPACK to be configured with ButterflyPACK support (`--download-butterflypack`).

LOSSY, LOSSLESS and ZFP_BLR_HODLR compression require STRUMPACK to be configured with ZFP support (`--download-zfp`).

## See Also

`MATSOLVERSTRUMPACK`, Matrices, `Mat`, `PCLU`, `PCILU`, `MATSOLVERSUPERLU_DIST`, `MATSOLVERMUMPS`, `PCFactorSetMatSolverType()`, `MatSolverType`, `MatGetFactor()`, `MatSTRUMPACKSetReordering()`, `MatSTRUMPACKReordering`, `MatSTRUMPACKCompressionType`, `MatSTRUMPACKSetColPerm()`.

## Level

beginner

## Location

src/mat/impls/aij/mpi/strumpack/strumpack.c

## Examples

src/ksp/ksp/tutorials/ex52.c

Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages