2
$\begingroup$

What are the differences between MA57 and HSL_MA57 solvers? I'm in an optimization class that will make use of symmetric indefinite factorizations, and I'm trying to learn about the distinction between these two. I know that MATLAB uses the MA57 solver but am unsure of the differences beyond this. Thanks!

$\endgroup$
  • 3
    $\begingroup$ Based on the documentation and change logs at the site you indicate, the principal difference is that one library (MA57) is written in traditional Fortran 77 style (while also being wrapped by MATLAB), while th other is a fork created to use the more modern Fortran 90 syntax. To get a proper answer you might do better to try and find the recent maintainer. $\endgroup$ – origimbo Jan 18 '18 at 14:31
1
$\begingroup$

Nice summary of HSL_MA77 vs MA57 taken from here (p.45) but note that it's different from the original Q:

HSL MA77 [Reid and Scott 2008; 2009b] is also a multifrontal solver that is designed to solve positive definite and indefinite sparse symmetric systems. A different inner kernel is used in each case to achieve the best performance. The fundamental difference between MA57 and HSL MA77 is that the latter is an out-of-core solver capable of holding all the data out of core, enabling the solution of much larger problems. Further, care has been taken to allow the addressing of fronts with 64-bit integers. This is essential as some problems require the factorization of dense matrices containing this many elements.

It exploits the virtual memory system of Reid and Scott [2009a] to minimize overheads due to the out-of-core approach while remaining robust. The ability to work in core is also available, though some overhead from the out-of-core design remains. Despite this, on problems that MA57 is able to solve, the performance of HSL MA77 is favourable in the factorization phase, though the solve phase can be comparatively slow.

While full control over the factorization is still available, the large range of support routines that come with MA57 are not present. The user is expected to supply their own ordering and scaling. This reflects the limited availability of subroutines capable of performing these routines in an out-of-core fashion for large problems.

$\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.