5
$\begingroup$

Reading through Tim Davis' book Direct Methods For Sparse Linear Systems, he says that matlab can use a supernodal Cholesky decomposition but never uses a multifrontal Cholesky decomposition. At least when using the backslash operator. By contrast, HSL MA57, used in many optimization codes, is a sparse symmetric indefinite solver that uses a multifrontal method.

I only have a very basic understanding of the differences between supernodal and multifrontal methods. So I'm curious if there are restrictions for when supernodal vs. multifrontal methods can be applied? In cases when they are both valid, are there any trade-offs between them that could lead to one being better than the other?

$\endgroup$
3
$\begingroup$

Both supernodal and multifrontal methods achieve high performance using the same idea: performing matrix operations on dense blocks using BLAS3-like matrix kernels. There are lots of reports comparing specific implementations of these methods on a wide variety of matrices, e.g.

http://www.numerical.rl.ac.uk/reports/ghsRAL200505.pdf

I don't know of any results showing one approach to be fundamentally better than the other, in general.

There are matrices that are so sparse that the dense submatrix approach of supernodal and multifrontal methods does not lead to optimal performance. See, for example:

http://dl.acm.org/citation.cfm?id=1824814

As you point out, MA57 is designed for symmetric indefinite matrices when an $LL^T$ is not always possible but an $LDL^T$ decomposition is. MATLAB uses MA57 for symmetric indefinite matrices. See,

http://www.mathworks.com/help/matlab/ref/ldl.html

By setting

spparms('spumoni',1);

before invoking backslash, you can see what algorithms are being used for your particular matrix. For more information, see:

http://www.mathworks.com/help/matlab/ref/spparms.html

$\endgroup$

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.