I need to find C/C++ libraries which offer function for computing Schur complement. I know about MUMPS and Pastix, but I need more of them to compare them in my research.

Do you have any experience with other libraries?

  • $\begingroup$ What size are the matrices you're working with? What type of compute node(s)/computers are you running it on? If you're having to deal with distributed memory systems, the answers will be very different from a suggestion for your laptop. $\endgroup$ Jul 17 '15 at 2:47
  • $\begingroup$ @NoseKnowsAll Very large matrices, it's meant to run on some nodes of our university supercomputer. But the sequential library is enough for now, its results will be send out separately. $\endgroup$
    – Eenoku
    Jul 17 '15 at 8:23
  • 1
    $\begingroup$ Probably one of the default libraries for you to look into for distributed computing would be ScaLapack: netlib.org/scalapack $\endgroup$ Jul 17 '15 at 15:29

My first suggestion would be to take a look at LAPACK (Linear Algebra Package). It defines a set of interfaces and there are several optimized implementations available for different machines. Personally, I had good experience with ATLAS, a LAPACK implementation that provides lots of auto tuning. This was some time ago though, there might be better alternatives available now.

Note that on the LAPACK website there are links to other projects, e.g. MAGMA which is similar to LAPACK but for systems with multi-core nodes and GPUs (never tried that one myself, though).

LAPACK itself is based on BLAS (basical linear algebra), which is in itself a set of interfaces for, well, basic linear algebra routines (matrix-vector product, vector-vector product, matrix-matrix product etc). The advantage here again is that BLAS by itself is a set of interfaces and different implementations are available, some of them heavily optimized (e.g. GOTO-BLAS)

I assume one could also directly use BLAS to compute a Schur complement $S = A - B*D^{-1}*C$ using routines for matrix products and inversion.

Addendum: Jack Dongarra has compiled long list of different LA libraries, see here. The list also shows what features the libraries have (Languages, Dense/Sparse, Real/Complex etc.).

  • $\begingroup$ I'm surprised LUSOL isn't on Dongarra's list. $\endgroup$ Jul 17 '15 at 14:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.