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
- Permute matrix to make diagonal nonzeros-mat_strumpack_reordering
- 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
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages