coin-or-tools / ThirdParty-Mumps

COIN-OR autotools harness to build Mumps
Eclipse Public License 1.0
18 stars 13 forks source link

Using Mumps 5 across the board #3

Closed ViralBShah closed 4 years ago

ViralBShah commented 4 years ago

We are building various Coin-OR solvers using Julia's new BinaryBuilder system, and one of the questions we had is whether it is possible to use MUMPS 5 in Clp and Cbc.

https://github.com/JuliaPackaging/Yggdrasil/issues/509

I notice there's a branch here, but the default builds use MUMPS 4. Is the recommended stable thing for now to use MUMPS 4 everywhere, which would also need METIS 4? Would you know if the APIs are compatible and if we can simply drop in MUMPS 5 instead of MUMPS 4 and see how it goes?

ViralBShah commented 4 years ago

Is there a recommendation - between MUMPS and SuiteSparse, if a particular sparse solver library is preferred over the other? Julia already ships with SuiteSparse, so all else being equal, that's what we would prefer.

Do you foresee being able to link against 64-bit SuiteSparse and 64-bit BLAS and LAPACK anytime in the near future?

svigerske commented 4 years ago

My previous experience with MUMPS 5.2.1 in Ipopt was that Ipopt with this MUMPS version was considerably slower than with MUMPS 4.10.0 on CUTEst (on average). I haven't tried with MUMPS 5.3.0 so far and hope to look into this sometime soon again. But that's the main reason why ThirdParty/MUMPS master and stable branches are on 4.10.0.

Also the switch to METIS 5 is on the list. That didn't happen even in the mumps5 branch, because the HSL codes require METIS 4 (and MUMPS 5 can work with METIS 4). But I think I can get the HSL codes work with METIS 5, too (I have that made working somewhere else).

I'm not aware of any computational experiments comparing Clp with the different linear solvers available. That may better be asked on the Clp mailing list than in this project.

I don't plan to invest time into 64-bit BLAS/Lapack/SuiteSparse/MUMPS for Clp in the near future. There is something in Clp to use larger integer (long long), so it may not be that far off, but working with Clp code is a pain - why would I volunteer to do so? :) It's somewhere (not that high) on my list for Ipopt, though.

ViralBShah commented 4 years ago

Thank you! This is very helpful.

ViralBShah commented 4 years ago

Cc @odow @dpo

svigerske commented 4 years ago

Here is one comparison of Ipopt with MUMPS 4.10.0 vs Ipopt with MUMPS 5.3.1 on CUTEst: https://github.com/coin-or/Ipopt/issues/310#issuecomment-628680507 It doesn't encourage me to make the switch to MUMPS 5 in master at the moment, but the mumps5 branch is certainly usable.

The move to METIS 5 has happened in the meanwhile, though. Branches master, stable/2.1, and mumps5 now look for a metis library in the system instead of a "coinmetis" from coin-or-tools/ThirdParty-Metis and should work with both Metis 4 and Metis 5. There is some code in metis_adapter.c that makes Metis 5 usable with Mumps 4.

svigerske commented 3 years ago

Using MUMPS 5 has become the default a few weeks ago. The stable/2.1 branch that gets MUMPS 4 is still working and may so for a while, but I now made master point to stable/3.0 (formerly known as mumps5).
Not that I am convinced that MUMPS 5 is a better choice performance-wise, but it is the version that gets updates by the MUMPS developers.

An option to build a variant of MUMPS with all integers 64-bit has been added some weeks ago, too (see README.md). This requires a BLAS/LAPACK with 64-bit integers. configure should be able to pick up appropriate MKL libs.

ViralBShah commented 3 years ago

In Julia 1.7, we will be shipping libblastrampoline, which will allow a great amount of flexibility in picking BLAS flavours.

I will plan to update all our COIN solvers in Julia's binarybuilder to adopt this in the next few weeks.

cc @odow