(Apologies for any duplicates; I sent this earlier from a different address,
one that I've not registered with this mailing list, and very likely it got
munched by the spamivore. So trying again.)
I've got an optimization involving ~10^7 variables for which I'm testing
Ipopt, with options that include the following:
hessian_approximation="limited-memory",
linear_system_scaling="none", # better performance? doesn't help
print_level=print_level,
sb="yes") # suppress the annoying banner
My objective function is quite complicated (among other things, it involves
performing calculations on a 100GB array stored in a file), but I've put in a
lot of work to make its evaluation efficient. The very first function evaluation
is I/O limited and takes about 20 minutes, but once the relevant data are
cached in memory it drops to about 0.5s per function evaluation.
Now that I've achieved good performance with my objective function, very
distressingly I am noting that Ipopt is extracting a huge cost: something like
95% of the time is spent in routines that profiling (with C=true) reveals to be
the MUMPS solver. This seems surprising, since with "limited-memory" I presume
it's using l-bfgs (see
http://www.coin-or.org/Ipopt/documentation/node52.html), and the linear
algebra operations of l-bfgs are not very taxing (they should be much
cheaper than my objective function).
Any ideas? I just submitted a registration to download the HSL routines under
an academic license, but the notice suggested it could be a day or two before
that's approved. I don't really want to twiddle my thumbs in the meantime,
especially since I have no idea whether it will help.
(Since I first wrote this I've been playing with the teh/constrained branch of
Optim with very promising results, but I'll discuss that elsewhere.)
--Tim