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

Examples#

src/ksp/ksp/tutorials/ex52.c


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