[Ipopt] Request for comment: any successful uses of MPI parallel MUMPS with Ipopt?

Damien damien at khubla.com
Tue Sep 30 11:04:23 EDT 2014


Hi,

A few years ago I wrapped the MPI version of MUMPS in an interface that 
makes it look like a regular in-process solver.  The wrapper spawns the 
MPI universe outside of the calling process, and uses Boost's 
Interprocess library to send the numbers back and forth between the main 
solver process and the MPI workers.  It was cool technically, but the 
performance was pretty ordinary, either in IPOPT or in any other 
solver.  The problem is that you have the processes spinning up and 
spinning down as the MPI layer runs, then the solver, then MPI, then the 
solver, and so on.  It was hard to make everything synchronise and it 
need thread yielding calls to work.  Performance-wise it was a B-minus 
at the best.  With the recent versions of Intel Pardiso working well 
with IPOPT, I stopped development, because even though Pardiso took more 
iterations the wall-clock time was faster.

You can wrap all of IPOPT in MPI so everything is in-process.  You would 
only have the master MPI process do any IPOPT calls, and they can all 
work with MUMPS.  This would give you the speed advantages of MPI MUMPS 
all in one MPI universe that's always on and running. It's difficult to 
link that MPI-IPOPT to any other software though, because it then runs 
inside MPI (just like MPI MUMPS and you're back where you started...).

The MUMPS developers are working on MUMPS 5.0, which is more or less a 
rewrite and will incorporate OpenMP and MPI.  Like all rewrites, it's 
behind schedule :-) but the performance figures are pretty good on the 
OpenMP version.  In the medium to long run, that's the best pathway for 
easy open-source parallelism in IPOPT.

Cheers,

Damien

On 2014-09-30 3:27 AM, Greg Horn wrote:
> Hi all,
>
> Just to clarify, we are considering making the debian and ubuntu ipopt 
> packages (apt-get install coinor-libipopt) use serial MUMPS instead of 
> parallel. We don't know of anyone exploiting the MPI parallelism. So 
> speak up if you use parallel MUMPS or if you know anyone who does!
>
> On Tue, Sep 30, 2014 at 10:20 AM, Tony Kelman <kelman at berkeley.edu 
> <mailto:kelman at berkeley.edu>> wrote:
>
>     This is an issue that has come up a few times before on the list,
>     usually
>     with respect to distribution/Homebrew packages wanting to link
>     Ipopt to
>     the MPI version of Mumps. I would like to get feedback from anyone
>     on the
>     list who can provide a counterexample to my understanding of current
>     functionality. The question is:
>     Has anyone successfully used the MPI parallel version of MUMPS in
>     combination with Ipopt? Specifically I'm asking about the mainline
>     supported release versions of Ipopt, not the work that happened
>     several
>     years ago in the experimental distributed-memory parallel branch
>     https://projects.coin-or.org/Ipopt/browser/branches/parallel . I know
>     it's possible to use the MPI version of MUMPS with a single
>     process just
>     fine, or use MPI to parallelize user function evaluations, or run
>     separate
>     completely independent instances of Ipopt solving different
>     optimization
>     problems simultaneously. What I'm asking about is running the
>     MUMPS linear
>     solver across multiple processes with MPI and achieving measured
>     parallel
>     speedup on a single optimization problem.
>     I have done this for the multithreaded solvers WSMP/MA86/MA97/Pardiso,
>     or to a limited extent via multithreaded BLAS, but never
>     personally with
>     MPI MUMPS. I'd like to find out whether it has been done before,
>     in case
>     it is possible but just complicated to do. If you've tried to do
>     this but
>     failed, I'd be interested to hear how far you got.
>     Parts of Ipopt outside of MUMPS are not MPI-aware, so running multiple
>     copies of an ipopt executable with mpirun will probably duplicate all
>     computations outside of the linear solver. I'm not actually sure
>     what would
>     happen if each copy of ipopt thinks it's solving an entire
>     optimization
>     problem but MUMPS is trying to decompose the linear system over MPI.
>     I'd be surprised if it worked, but also happy to be proven wrong here.
>     Thanks in advance,
>     Tony
>
>     _______________________________________________
>     Ipopt mailing list
>     Ipopt at list.coin-or.org <mailto:Ipopt at list.coin-or.org>
>     http://list.coin-or.org/mailman/listinfo/ipopt
>
>
>
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20140930/537ab17d/attachment-0001.html>


More information about the Ipopt mailing list