| 29e0a805 | 29-Aug-2023 |
Pieter Ghysels <pghysels@lbl.gov> |
Update the interface to STRUMPACK
STRUMPACK provides a sparse direct solver (but unlike fi SuperLU, it is based on the multifrontal method). STRUMPACK also provides preconditioners based on approxim
Update the interface to STRUMPACK
STRUMPACK provides a sparse direct solver (but unlike fi SuperLU, it is based on the multifrontal method). STRUMPACK also provides preconditioners based on approximate multifrontal LU factorization. In the precoditioners larger dense blocks in the sparse LU factors are compressed using rank-structured matrix approximations (or using lossy/lossless compression using the ZFP library).
See https://github.com/pghysels/STRUMPACK https://portal.nersc.gov/project/sparse/strumpack/
This commit adds different preconditioning options. Previously only the HSS (hierarchically Semi-Separable) format was supported. Now we also have BLR (Block Low Rank), HODLR (Hierarchically Off-Diagonal) with the option to replace low-rank with butterfly, Lossy and Lossless compression (through ZFP). The new methods work considerably better than the older HSS code. When using
-pc_type lu -pc_factor_mat_solver_type strumpack
the solver behaves as a direct solver. When using
-pc_type ilu -pc_factor_mat_solver_type strumpack
it will work as a preconditioner, using BLR compression. This should be a robust preconditioner for a wide range of problems. One can tune the compression tolerance, and the minimum block (separator) size for compression using:
-mat_strumpack_compression_rel_tol 1e-3 -mat_strumpack_compression_min_sep_size 500
You can also select the compression type explicitly
-pc_type ilu -pc_factor_mat_solver_type strumpack -mat_strumpack_compression LOSSY
For now we recommend BLR, as it seems to work best, and does not require additional external dependencies (it is also what MUMPS implements).
Also updates the test src/ksp/ksp/tutorials/ex52.c.
Also adds support for the solve with multiple RHS.
Also adds an option for the GEOMETRIC fill-reducing ordering which performs nested dissection on a regular nx x ny x nz grid with nc degrees of freedom per grid-point and a stencil (potentially a wider stencil). It is assumed that the matrix is in the natural (lexicographical?) ordering. This can make reordering much faster for regular grid problems.
Also adds installation scripts STRUMPACK dependencies SLATE, ZFP and ButterflyPACK. SLATE is a scalapack replacement with GPU capabilities. ZFP is used for floating point compression. ButterflyPACK is used for the HODLR and HODBF compression schemes.
show more ...
|