[Coin-ipopt] Re: IPOPT 3 Memory question

damien at khubla.com damien at khubla.com
Fri Jul 13 23:20:51 EDT 2007


Rhoda,

you need a few config parameters in the kernel to get more than 3GB of
usable space on Linux.  Even more on Windows...

The MUMPS interface also has the ability to re-allocate more memory on a
failed factorisation, and you can go into the solver interface there and
turn on the verbose options to see how much space it really wants.  It's
entirely possible you need a 64-bit address space.

Damien

> 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
> _______________________________________________
> Coin-ipopt mailing list
> Coin-ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/coin-ipopt
>





More information about the Coin-ipopt mailing list