[Ipopt-tickets] [Ipopt] #213: Repeatability of optimization runs with IPOPT
Ipopt
coin-trac at coin-or.org
Tue Aug 6 19:12:07 EDT 2013
#213: Repeatability of optimization runs with IPOPT
----------------------------+---------------------------
Reporter: florian.saupe | Owner: stefan
Type: defect | Status: assigned
Priority: normal | Component: Ipopt
Version: 3.11 | Severity: normal
Resolution: | Keywords: repeatability
----------------------------+---------------------------
Comment (by jonnyz007):
OPTI IPOPT uses the Intel Math Kernel Library (MKL) for BLAS and LAPACK
(v11, R4 in OPTI v2.00), and HSL MA57 (supplied with MATLAB). MA57
supplied with MATLAB is also (I believe) compiled against a version of the
Intel MKL for BLAS and LAPACK.
A source of non-determinisim (as identified by Stefan) is the Intel MKL
itself, as described in the following link:
http://software.intel.com/en-us/articles/getting-reproducible-results-
with-intel-mkl
By default unless all memory that MKL is operating on is aligned (i.e. via
aligned malloc calls) AND Conditional Numerical Reproducibility (CNR) is
enabled
http://software.intel.com/en-us/articles/introduction-to-the-conditional-
numerical-reproducibility-cnr
then results may (will) be non-deterministic. Whether you notice the non-
deterministic results will depend on your problem.
Things you can try:
- Use the linear solver MUMPS rather than MA57 (via ipoptset)
- Set the processor affinity of MATLAB to 1 processor only (via task
manager)
However I doubt either of the above will fix the issue. IPOPT will need to
be re-written with memory aligned allocation calls (i.e. overloading new
and delete), and compiled against MKL with CNR enabled in order for OPTI
to support parallelized deterministic behaviour. In addition MA57 cannot
be used.
Next best solution - I can compile a version of IPOPT against Netlib
BLAS/LAPACK (not threaded) and sequential MUMPS, and we can see if that
helps? Definitely won't be as fast, but might be deterministic... Let me
know if you want to try this.
--
Ticket URL: <https://projects.coin-or.org/Ipopt/ticket/213#comment:3>
Ipopt <http://projects.coin-or.org/Ipopt>
Interior-point optimizer for nonlinear programs.
More information about the Ipopt-tickets
mailing list