PARDISO in IPOPT

372 views
Skip to first unread message

Mart Ruijs

unread,
Jul 23, 2015, 5:11:51 AM7/23/15
to OPTI Toolbox Forum
Hi!

I've been using IPOPT solve a large and sparse optimal control problem. I've done quite a bit to speed up the Matlab code on my end but i'm interested in speeding up the solver itself as well.
So far i've been using compiled versions of IPOPT because I'm as you put it quite well "an OK programmer, but I just can't work out how to compile (insert solver here)."
I saw that you offer a version of IPOPT that uses PARDISO. I'm interested in exploiting the sparsity of my problem and the fact that PARDISO is multi-threaded.
I've used the latest version of your software + Matlab2014b and i'm calling IPOPT directly.
So far i've found no performance increase by using PARDISO, its even a bit slower. It doesn't seem to use all my cores.
Is there a setting I'm missing? I'm using a direct call to IPOPT so i'm not using your settings file. However, i couldn't find any PARDISO specific settings in your code is that correct?

Kind Regards,

Mart

Jonathan Currie

unread,
Jul 23, 2015, 5:27:38 AM7/23/15
to OPTI Toolbox Forum

Hi Mart,

 

I’m assuming you are seeing the following message when IPOPT runs?

This is Ipopt version 3.12.3, running with linear solver pardiso.

 

In my experience PARDISO can be a little sensitive with IPOPT, sometimes it works, sometimes it doesn’t. The original version of PARDISO worked well, the Intel MKL one I link against appears more sensitive. I never found out why.

 

To check it is working you can have a look at test_ipopt_linearcon.m in OPTI/TestProblems/Development. The last two cells run a “large” sparse problem with a trivial solution. PARDISO is called once and if you have the task manager open, you should see the CPU usage spike to 50% at least (Intel PARDISO appears to not call logical CPUs, only physical ones, at least the way I set it up), although briefly.  You’ll also see in the print out something like:

 

Total CPU secs in IPOPT (w/o function evaluations)   =      8.848

Total CPU secs in NLP function evaluations           =      0.246

 

If your problem is spending most of its time in the NLP function evaluations, then probably using PARDISO isn’t going to help much. In the above problem most of the time spent is within IPOPT, which in this case, is solving the system of linear equations that arises at iteration 1. Therefore a parallelized linear solver can be useful.

 

Obviously PARDISO needs the sparsity structure to really work, so ensure you are supplying the jacobianstructure.

 

Also note that MA57 is pretty fast and reliable. Only very large problems are likely to benefit from PARDISO’s parallelization. I’ve seen many problems where MA57 is faster than the parallelized versions of the HSL linear solvers within IPOPT as well. The getting started cost of the parallelization versus actual solving can sometimes make it just not worthwhile. Only profiling can reveal where the added work becomes useful.

 

Not sure that helps at all, but I wouldn’t find your results surprising.

 

Jonathan

--
You received this message because you are subscribed to the Google Groups "OPTI Toolbox Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to opti-toolbox-fo...@googlegroups.com.
To post to this group, send email to opti-tool...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages