[Ipopt] [OS] Using MUMPS in Ipopt within OSSolverService application causesMPI errors

Florent Teichteil florent.teichteil at gmail.com
Thu Jul 16 07:58:28 EDT 2015

Ok, thanks!

But in this case I'm not sure to understand why Ipopt attempts to deal
with the parallel version of MUMPS by calling MPI_Init and
MPI_Finalize when needed or by forcing the use of flag
HAVE_MPI_INITIALIZED. Why trying to deal with something that is anyway
not supposed to work in essence?

At least it is confusing for the end user, and at worst it is a bug
because COIN-OR and especially OSSolverService should not compile in
presence of the parallel version of MUMPS. For instance,
OSSolverService can NOT work under Fedora with the distribution
packages of MUMPS and COIN.

Why not simply aborting the build of COIN-OR in presence of the
parallel version of MUMPS?

Anyway, thank you very much for your help.


2015-07-16 13:32 GMT+02:00 Tony Kelman <kelman at berkeley.edu>:
> Try using the serial version of Mumps, if that's available from the Fedora
> package. Ipopt is not an MPI parallel application, and neither is
> OSSolverService, so there's no benefit and a lot of trouble to be had from
> trying to use the MPI version of Mumps.
> -Tony
> -----Original Message----- From: Florent Teichteil
> Sent: Thursday, July 16, 2015 6:36 AM
> To: ipopt at list.coin-or.org ; os at list.coin-or.org
> Subject: [OS] Using MUMPS in Ipopt within OSSolverService application
> causesMPI errors
> Hi all,
> I compiled COIN-1.8 optimization suite with MUMPS as the linear solver
> used by Ipopt. My operating system is Fedora 22 and I use MUMPS
> provided by Fedora packages, which I think is compiled in its parallel
> version using MPI.
> Then, I tried to solve an NLP with OSSolverService (application
> provided by the COIN "Optimization Service" project) using Ipopt. I
> get the following error:
> *** The MPI_Comm_f2c() function was called before MPI_INIT was invoked.
> *** This is disallowed by the MPI standard.
> *** Your MPI job will now abort.
> I read many posts on COIN-OR mailing lists related to MPI issues. As
> suggested in these posts, I compiled COIN-OR with the
> -DHAVE_MPI_INITIALIZED flag but it doesn't change anything. These
> posts say also that this is the user responsibility to initialize MPI
> by calling  MPI_init in the user code, but here this is not relevant
> because I am using the OSSolverService application provided by
> Therefore, I think this bug is related:
> - either to Optimization Service, which should call MPI_init() and
> MPI_finalize() in the OSSolverService program
> - or to Ipopt, which should revise the logic behind the use of MPI
> functions. Indeed, I looked at the IpMumpsSolverInterface.cpp file
> where I suspect some logical mistakes: the call to MPI_Init depends
> upon the directive "#ifndef MUMPS_MPI_H" on line 59 but actually
> MUMPS_MPI_H is already defined (at least on Fedora) from the file
> mpi.h provided by MUMPS and that is included on line 17. Thus, the
> lines below "#ifndef MUMPS_MPI_H" where MPI is initialized are never
> called, causing the bug in OSSolverService.
> In either case I think this is a bug in COIN-OR's Optimization Suite
> package because using the provided application OSSolverService with
> Ipopt and the underlying MUMPS linear solver provided by the operating
> system is supposed to work, isn't it?
> All the best,
> Florent Teichteil.
> _______________________________________________
> OS mailing list
> OS at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/os

More information about the Ipopt mailing list