  This paper discusses parGeMSLR, a C++/MPI software library for the solution
of sparse systems of linear algebraic equations via preconditioned Krylov
subspace methods in distributed-memory computing environments. The
preconditioner implemented in parGeMSLR is based on algebraic domain
decomposition and partitions the symmetrized adjacency graph recursively into
several non-overlapping partitions via a p-way vertex separator, where p is an
integer multiple of the total number of MPI processes. From a numerical
perspective, parGeMSLR builds a Schur complement approximate inverse
preconditioner as the sum between the matrix inverse of the interface coupling
matrix and a low-rank correction term. To reduce the cost associated with the
computation of the approximate inverse matrices, parGeMSLR exploits a
multilevel partitioning of the algebraic domain. The parGeMSLR library is
implemented on top of the Message Passing Interface and can solve both real and
complex linear systems. Furthermore, parGeMSLR can take advantage of hybrid
computing environments with in-node access to one or more Graphics Processing
Units. Finally, the parallel efficiency (weak and strong scaling) of parGeMSLR
is demonstrated on a few model problems arising from discretizations of 3D
Partial Differential Equations.
