STRUMPACK – STRUctured Matrix PACKage – is a software library that provides linear algebra routines for sparse matrices and for dense rank-structured matrices, i.e., matrices that exhibit some kind of low-rank property. In particular, STRUMPACK uses the Hierarchically Semi-Separable matrix format (HSS). Such matrices appear in many applications, e.g., Finite Element Methods, Boundary Element Methods ... In sparse matrix factorization, the fill-in in the triangular factors often has a low-rank structure. Hence, the sparse linear solve in STRUMPACK exploits the HSS matrix format to compress the fill-in. Exploiting this structure using a compression algorithm allows for fast solution of linear systems and/or fast computation of matrix-vector products, which are two of the main building blocks of matrix computations. STRUMPACK has two main components: a distributed-memory dense matrix computations package (for dense matrices that have the HSS structure) and a distributed memory fully algebraic sparse general solver and preconditioner. The preconditioner is mostly aimed at large sparse linear systems which result from the discretization of a partial differential equation, but is not limited to any particular type of problem. STRUMPACK also provides preconditioned GMRES and BiCGStab iterative solvers.
Usage and applications: An interface to STRUMPACK is available from PETSc. STRUMPACK is used in the M3D-C1 fusion code and the MFEM finite element library.