[Ipopt] IPOPT performance (and impact of BLAS library)

Jon Herman jon.herman at colorado.edu
Mon Sep 8 16:53:56 EDT 2014


I am working on implementing IPOPT in a piece of software that has a 
need for very good performance. Unfortunately, it seems that right now 
my total run-time is about 80% in IPOPT (that number excludes the 
function evaluations, as well as any time setting up the problem, etc.). 
For me to put IPOPT to good use, I'm hoping to make it run more 
efficiently, and even out the workload between IPOPT and the function 
evaluations, preferably shifting the work to the function evaluations as 
much as possible.

Originally, I was using the BLAS/LAPACK that can be installed with 
IPOPT. In an attempt to improve performance, I switched to OpenBLAS. To 
my confusion, performance did not change at all. This is leading me to 
believe that something other than the BLAS library is dominating the 
cost. (I am certain I properly removed the old libraries when switching 
BLAS implementation) I'm not sure how to effectively narrow down where 
IPOPT is spending most of it's time, and how to subsequently improve 
that performance.

I've made sure to try the ma27, ma57, ma77, ma86, ma97, and mumps 
solvers. Performance varies among them, but 80% of the time spent in 
IPOPT is the best result I achieve (which is typically with ma27 or 
ma57, the other solvers are closer to 90%). I've also made sure to try 
problems as small as 500 variables and 400 constraints, to as large as 
110 000 variables and 80 000 constraints (and many points in between 
those extremes). Performance is very consistent across that range (for a 
given solver), again regardless of the BLAS library being used. I've 
been doing this using the quasi-Newton approximation for the Hessian, 
which I was hoping to get away with, but I suppose this may put a lot of 
work into IPOPT's side of the court. I'll also mention that I'm calling 
IPOPT through the PyIPOPT module (though I'm expecting this to create 
only a small, fixed overhead).

If you have any thoughts on why IPOPT might be hogging such a large 
fraction of my total run-time, and/or how I could improve this (or 
determining if this might be entirely unavoidable), I would greatly 
appreciate it! (and of course I'd be happy to provide additional 
information if that would be useful)

Best regards,

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20140908/1e400776/attachment.html>

More information about the Ipopt mailing list