[Ipopt] MPI Issue in IPOPT 3.11.7 / Mumps

Tony Kelman kelman at berkeley.edu
Thu Feb 20 23:20:25 EST 2014

Thanks Dominique!

As I mentioned in the discussion that brought this up on Github 
(https://github.com/Homebrew/homebrew-science/issues/656), I think one 
possible approach might be to move the MPI_Init() and MPI_Finalize() out of 
the MumpsSolverInterface constructor/destructors, and put them in the Ipopt 
solver object's constructor/destructor instead. We'd need to do some 
ifdef'ing to skip calling MPI_* if we don't have access to the commonly-used 
fake MPI headers from sequential Mumps.

However I'm not so sure if that would completely solve the problem, and I 
wanted to get others' opinions here who may have better ideas or have come 
across this before.


-----Original Message----- 
From: Dominique Orban
Sent: Thursday, February 20, 2014 8:04 PM
To: ipopt at list.coin-or.org
Subject: [Ipopt] MPI Issue in IPOPT 3.11.7 / Mumps

Hi there,

Building IPOPT 3.11.7 with clang/clang++ or gcc/g++ on OSX 10.8.5 against 
MUMPS 4.10.0 and OpenMPI 1.7.4 results in the C test hs071_c hanging forever 
or crashing.

There appears to be a problem with the MPI setup in the Mumps interface. The 
C test solves the problem twice (the second solve with warm starting). But 
this means that MPI_Init() is called twice and that leads to an error: 

A user suggested that IPOPT shouldn't call MPI_Init() at all and proposes a 
patch (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=736842) but 
applying this patch results in a situation where MPI_Init() is never called:

The MPI_Comm_f2c() function was called before MPI_INIT was invoked.

Both my C++ and MPI knowledge are extremely limited. Somehow, MPI_Init() is 
called again when re-solving and/or MPI_Finalize() is never called. Or 
something else is going on... I got in touch with the Mumps guys to see if 
they have any advice.



Ipopt mailing list
Ipopt at list.coin-or.org

More information about the Ipopt mailing list