<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hello,<br>
<br>
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.<br>
<br>
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.<br>
<br>
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). <br>
<br>
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)<br>
<br>
Best regards,<br>
<br>
Jon<br>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</body>
</html>