<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html;charset=iso-8859-1'>
<style>BODY{font:10pt Tahoma, Verdana, sans-serif;}</style>
</head>
<body>
Being a distributed MPI solver, MUMPS is written to live in its own memory space or process, which is likely why it isn't totally thread-safe. I've talked to the devs about a fully threaded version and they'd like to do it given infinite time & resources, but it's not on their list of priorities. The devs recommended to me to use a threaded BLAS because of the heavy use of the L3 BLAS in MUMPS.<br><br>I tried the ATLAS threaded blas in MUMPS in IPOPT and it definitely speeds the linear solve up. I've also run MUMPS in its MPI form with multiple processes on one machine and it's a tad faster than with ATLAS (the S.I. "tad "being a well-known scientific measurement...). The code is more messy though and it wasn't an exhaustive set of tests. I haven't gone the whole hog and run a threaded blas/lapack through the rest of IPOPT. I know Andreas has used WSMP inside IPOPT with good scaleup on multiprocessor systems as well. <br><br>Damien<br> <blockquote style="border-left: 2px solid rgb(0, 0, 255); padding-left: 5px; margin-left: 5px; margin-right: 0px;"><hr><b>From:</b> Dmitry Golovashkin [mailto:Dmitry.Golovashkin@sas.com]<br><b>To:</b> Javier Pedrido [mailto:javierpedrido@hotmail.com], coin-ipopt@list.coin-or.org<br><b>Sent:</b> Thu, 11 Oct 2007 11:17:08 -0600<br><b>Subject:</b> RE: [Coin-ipopt] Is Ipopt + MUMPS thread safe?<br><br>> MUMPS definitely isn't.<br>
<br>
try to request it from developers :-)<br>
MUMPS is a parallel distributed solver (according to its website)<br>
it should be cake for them to eliminate global references (I think.)<br>
<br>
> I will have to synchronize the solving code.<br>
<br>
waiting on mumps is probably a bad idea since<br>
most/all of your threads will be blocked waiting for factorization to complete.<br>
A more interesting option would be to run models on a cluster<br>
(each node would get a separate mumps instance - it would nicely scale;<br>
but it might be a little less trivial to implement even in java);<br>
or just run parallel mumps itself.<br>
<br>
If you try its parallel + distrib flavor, please share your experiences.<br>
<br>
Thank you!<br>
Best regards, dm.<br>
<br>
<br>
-----Original Message-----<br>
From: <a href="mailto:coin-ipopt-bounces@list.coin-or.org">coin-ipopt-bounces@list.coin-or.org</a> [mailto:<a href="mailto:coin-ipopt-bounces@list.coin-or.org">coin-ipopt-bounces@list.coin-or.org</a>] On Behalf Of Javier Pedrido<br>
Sent: Thursday, October 11, 2007 12:33 PM<br>
To: <a href="mailto:coin-ipopt@list.coin-or.org">coin-ipopt@list.coin-or.org</a><br>
Subject: Re: [Coin-ipopt] Is Ipopt + MUMPS thread safe?<br>
<br>
The offender seems to be MUMPS, I will have to synchronize the solving code.<br>
Thanks for your quick reply,<br>
Javier<br>
<br>
>From: "Damien Hocking" <<a href="mailto:damien@khubla.com">damien@khubla.com</a>><br>
>To: <a href="mailto:coin-ipopt@list.coin-or.org">coin-ipopt@list.coin-or.org</a><br>
>Subject: Re: [Coin-ipopt] Is Ipopt + MUMPS thread safe?<br>
>Date: Thu, 11 Oct 2007 10:18:34 -0600<br>
><br>
>I'm pretty sure IPOPT isn't thread-safe. MUMPS definitely isn't. If you <br>
>want to run two separate solves in two threads, you need a separate <br>
>instance of IPOPT in each thread. Watch your BLAS and LAPACK libraries <br>
>too, if they're old F77 codes, they might have things like SAVE statements, <br>
>which means you should only run one instance in any process space.<br>
><br>
>Damien<br>
> _____<br>
><br>
>From: Javier Pedrido [mailto:<a href="mailto:javierpedrido@hotmail.com">javierpedrido@hotmail.com</a>]<br>
>To: <a href="mailto:coin-ipopt@list.coin-or.org">coin-ipopt@list.coin-or.org</a><br>
>Sent: Thu, 11 Oct 2007 09:39:45 -0600<br>
>Subject: [Coin-ipopt] Is Ipopt + MUMPS thread safe?<br>
><br>
>Hi,<br>
><br>
> I was trying the new Java interface and whenever I run it from 2 <br>
>different<br>
> threads, Ipopt crashes. Ipopt uses MUMPS as linear solver and was <br>
>compiled<br>
> with g95/g++ and with ifort/cl. Both builds crash in multi-threaded<br>
> environments. Am I doing something wrong or Ipopt/MUMPS are not thread <br>
>safe?<br>
><br>
> Thanks in advance,<br>
> Javier<br>
><br>
> _________________________________________________________________<br>
> MSN Amor: busca tu ½ naranja <a href="http://latam.msn.com/amor/" target="_blank">http://latam.msn.com/amor/</a><br>
><br>
> _______________________________________________<br>
> Coin-ipopt mailing list<br>
> <a href="mailto:Coin-ipopt@list.coin-or.org">Coin-ipopt@list.coin-or.org</a><br>
> <a href="http://list.coin-or.org/mailman/listinfo/coin-ipopt" target="_blank">http://list.coin-or.org/mailman/listinfo/coin-ipopt</a><br>
><br>
<br>
<br>
>_______________________________________________<br>
>Coin-ipopt mailing list<br>
><a href="mailto:Coin-ipopt@list.coin-or.org">Coin-ipopt@list.coin-or.org</a><br>
><a href="http://list.coin-or.org/mailman/listinfo/coin-ipopt" target="_blank">http://list.coin-or.org/mailman/listinfo/coin-ipopt</a><br>
<br>
_________________________________________________________________<br>
MSN Amor: busca tu ½ naranja <a href="http://latam.msn.com/amor/" target="_blank">http://latam.msn.com/amor/</a><br>
<br>
_______________________________________________<br>
Coin-ipopt mailing list<br>
<a href="mailto:Coin-ipopt@list.coin-or.org">Coin-ipopt@list.coin-or.org</a><br>
<a href="http://list.coin-or.org/mailman/listinfo/coin-ipopt" target="_blank">http://list.coin-or.org/mailman/listinfo/coin-ipopt</a><br>
<br>
_______________________________________________<br>
Coin-ipopt mailing list<br>
<a href="mailto:Coin-ipopt@list.coin-or.org">Coin-ipopt@list.coin-or.org</a><br>
<a href="http://list.coin-or.org/mailman/listinfo/coin-ipopt" target="_blank">http://list.coin-or.org/mailman/listinfo/coin-ipopt</a><br>
</blockquote><style>
</style>
</body></html>