ParGeMSLR: A MPI based parallel hierarchical low-rank preconditioner (Version 1.0.0)
ParGeMSLR (Parallel Generalized Multilevel Schur Low-Rank) is a MPI-based C++ library. \n This is a distributed-memory Multilevel Low-Rank Preconditioning and Solution package for the solution of large and sparse (non)symmetric linear systems of equations. \n The Parallel GeMSLR preconditioner is purely algebraic and is based on a multilevel reordering of the original set of equations/variables. The reordering is implemented by hierarchically ordering the interface degrees of freedom at each level and several reordering schemes are available. At each given level, GeMSLR decouples (via ParMETIS) the solution of the current linear system into one associated with the interior variables and another associated with the interface ones. The first subproblem is block-diagonal and solved in parallel by applying some form of ILU preconditioning. The recursive nature of the preconditioner appears on the second subproblem where the Schur complement linear system is reconditioned by the interface coupling matrix. The latter is applied by descending to the next level until the last level is reached. In the latter case, the user can choose to use either Block Jacobi acceleration or redundantly solve the problem by (I)LU. Low-rank correction terms can be added at each level to further enhance robustness, and these are applied using the Woodbury formula.
For questions/feedback send e-mail to Yousef Saad [saad@umn.edu] or Tianshi Xu [xuxx1180@umn.edu].
DESCRIPTION OF CONTENTS
INC
SRC
TESTS
INSTALLATION
Package
Tests
SAMPLE RUNS
Sequential version (Our current sequential version requires mpirun)
mpirun -np 1 ./driver_gen_gemslr_seq.ex
mpirun -np 1 ./driver_gen_gemslrz_seq.ex
mpirun -np 1 ./driver_laplacian_gemslr_seq.ex -fromfile inputs_user
mpirun -np 1 ./driver_laplacian_gemslrz_seq.ex -fromfile inputs_user -outfile out.log
Parallel version
mpirun -np 2 ./driver_gen_gemslr_par.ex
mpirun -np 2 ./driver_gen_gemslrz_par.ex
mpirun -np 2 ./driver_laplacian_gemslr_par.ex -fromfile inputs_user
mpirun -np 2 ./driver_laplacian_gemslrz_par.ex -fromfile -outfile out.log