[Coin-ipopt] Re: IPOPT 3 Memory question
Andreas Waechter
andreasw at watson.ibm.com
Fri Jul 13 14:17:09 EDT 2007
Hi Rhoda,
It is nice to hear from you - I hope you are doing well.
(I'm copying my reply to the mailing list, since your observation is
probably seen by others as well.)
> I'm running a problem that is reporting this error after it runs for a while:
>
> EXIT: Not enough memory.
> error running ipopt3:
> termination code 11
>
> I'm running with 1GB of physical memory and 2GB of swap. Before I go and
> purchase more, I'd just to confirm that this message is telling me to get
> more physical memory as opposed to just increasing some memory allocation
> number in the code somewhere.
>
> I also get these on occasion, but they don't cause IPOPT to exit:
>
> MA27BD returned iflag=-4 and requires more memory.
Before you buy more memory, I suggest two things:
1. The problem with MA27 is that it is written in Fortran 77, and doesn't
have dynamic memory allocation. Therefore, Ipopt has to guess beforehand,
how much memory MA27 requires (based on the number of nonzeros). The
options ma27_liw_init_factor and ma27_la_init_factor determine this
initial guess of MA27's memory requirement. If during the factorization
MA27 complains that it doesn't have enough memory, the guesses are
increased by some factor, and that factor is the value of the option
ma27_meminc_factor. Now, the default of that second option is "10", which
is maybe too aggressive. I would try smaller values (say, 2 or 3) in your
case.
2. It might also help to try a different linear solver. Starting with
Ipopt 3.3.1, we added support for the public domain linear solver MUMPS,
and if you are solving large problems, that one might require less memory
(you need a Fortran 90 compiler for MUMPS, such as GNU's gfortran - then
you can have the Ipopt Makefiles compile it for you.). But also other
linear solvers (such as Pardiso and WSMP, see the Ipopt documentation),
might be better in terms of memory requirement. Those are commercial
solvers, for which you get the compiled libraries, but if you use them for
academic purposes, you can get free temporary licenses.
Besides this, if you are running Ipopt on a 32bit platform, I think you
cannot use more than 2 (or possibly 3) GB anyway for one process (I
think... definitely not more than 4GB).
I hope this helps. If you find a way to solve your problem with one of
those suggestions (or any other way), it would be great if you could write
a note on
https://projects.coin-or.org/Ipopt/wiki/HintsAndTricks
;-)
[To all Ipopt users: If you find a useful trick that helps you to make
better use of Ipopt, please let others know about it at that wiki page!!!
Thanks!!!]
Andreas
More information about the Coin-ipopt
mailing list