Dense Solvers

STRUMPACK provides several rank-structured formats for dense matrix approximation. Included are HSS (Hierarchically Semi-Separable), BLR (Block Low Rank), HODLR (Hierarchically Off-Diagonal Low Rank), Butterfly, HODBF (Hierarchically Off-Diagonal Butterfly).

StructuredMatrix Interface

We provide an interface to these different formats through a single class strumpack::structured::StructuredMatrix. See the documentation for this class for more information. Multiple scenarios for construction are supported, such as

  • Construction from a dense input matrix
  • Matrix-free construction, using only a matrix-vector product
  • Construction using only selected matrix entries

Moreover, StructuredMatrix defines several operations, such as

  • Matrix-vector multiplication (and transpose product)
  • Factorization and solve
  • Query memory usage
  • Check maximum rank

Example usage of this StructuredMatrix class can be found in examples/dense/testStructured.cpp and examples/dense/testStructuredMPI.cpp.

If you require additional functionality, then feel free to reach out and contact us.

C Interface

The C interface to the StructuredMatrix class can be found in structured/StructuredMatrix.h . An example is available in examples/dense/dstructured.c.

Fortran Interface

The Fortran interface for the structured matrix functionality is based on the C interface (which is based on the C++ class strumpack::structured::StructuredMatrix), so we refer to the C and C++ interfaces for more detailed information. The Fortran interface can be found in structured/fortran/strumpack_dense.f90 . A Fortran example is available in examples/dense/fstructured.f90.

Note that the HODLR, HODBF, Butterfly and Low Rank formats are implemented using ButterflyPACK, which is written in Fortran. So a Fortran user can directly use ButterflyPACK.

Specific Formats

We recommend you use the StructuredMatrix interface. However, the following pages are specific for certain formats:

These are all implemented as sub-classes of the StructuredMatrix class.