[Ipopt] Problems with Pardiso solver in Ipopt

Andreas Waechter andreasw at watson.ibm.com
Fri Dec 12 18:44:55 EST 2008

Hi Rui,

First, there is probably more computation going on when Ipopt is running 
that only in Pardiso, and the Ipopt code itself is currently serial (there 
are some matrix-vector products that could take some time, but usually 
much less than the factorization).  Also, it could also be that a lot of 
computation time is spend for the function evaluations?  Depending on what 
you do here, it is probably also serial.

Olaf Schenk, the Pardiso developer, suggest that you could try a newer 
Pardiso library for the 4.3 GNU compilers.  Also, you could change the 
message level of Pardiso to see if you get some hints from Pardiso output. 
To do this, edit the 
Ipopt/src/Algorithm/LinearSolvers/IpPardisoInterface.cpp file and change 
the value of MSGLVL_ in the contructor (around line 75).

As for the difference in performance, I have not much to say.  Pardiso 
might return slightly different solutions if the matrix is processed 
differently (for different number of threads), and if you have a very 
sensitive problem, the performance can look quite different.  But it could 
of course also be some bug.  Maybe using a newer Pardiso library helps.

That's all I could contribute.



On Thu, 11 Dec 2008, Rui Huang wrote:

> Dear all
> I compiled IPOPT with pardiso parallel version and tested it with a
> fairly large problem (100,000 variables) on Intel Quad core Linux machine.
> It seems that the pardiso does not do the parallel computing even I
> specified the environmental parameter OMP_NUM_THREADS=4.
> The cpu usage was always around 25% no mater what value the parameter
> OMP_NUM_THREADS was (1,2,3,4).
> Do I need to specify something else to make pardiso do the parallel
> computing?
> Also I found  that although OMP_NUM_THREADS seems can not control the
> number of processors used in pardiso, the performance of pardiso  highly
> depends on this parameter.
> If it is set to 3 and 4,  my problem will converge in 6 iterations, 541
> cpus.
> If it is set to 2, pardiso is very unstable, my problem converges in
> more than 100 iterations, more than 3 hours,
> and there are many restoration phases and regularization steps.
> Does anyone know what is going on here?
> Thanks a lot.
> Cheers
> Rui
> -- 
> Rui Huang
> Chemical Engineering Department
> Carnegie Mellon University
> 5000 Forbes Ave Pittsburgh PA 15213
> www.andrew.cmu.edu/~ruih
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt

More information about the Ipopt mailing list