Examples for efficient BLAS implementations are:
Note: BLAS libraries distributed with Linux are usually not optimized.
Note that currently LAPACK is only required if you intend to use the quasi-Newton options in IPOPT. You can compile the code without LAPACK, but an error message will then occur if you try to run the code with an option that requires LAPACK. Currently, the LAPACK routines that are used by IPOPT are only DPOTRF, DPOTRS, and DSYEV.
Note: LAPACK libraries distributed with Linux are usually not optimized.
Currently, the following linear solvers can be used:
~agupta/wsmp.html)
The IPOPT library also has mechanisms to load the MA27, MA57, and Pardiso linear solvers from a shared library at runtime, if the library has not been compiled with them (see Section 2.2.7).
NOTE: The solution of the linear systems is a central ingredient in IPOPT and the optimizer's performance and robustness depends on your choice. The best choice depends on your application, and it makes sense to try different options. Most of the solvers also rely on efficient BLAS code (see above), so you should use a good BLAS library tailored to your system. Please keep this in mind, particularly when you are comparing IPOPT with other optimization codes.
If you are compiling MA57 or MUMPS within the IPOPT build system, you should also include the METIS linear system ordering package.
Interfaces to other linear solvers might be added in the future; if you are interested in contributing such an interface please contact us! Note that IPOPT requires that the linear solver is able to provide the inertia (number of positive and negative eigenvalues) of the symmetric matrix that is factorized.
Since the IPOPT code is written in C++, you will need a C++ compiler to build the IPOPT library. We tried very hard to write the code as platform and compiler independent as possible.
In addition, the configuration script currently also searches for a Fortran, since some of the dependencies above are written in Fortran. If all third party dependencies are available as self-contained libraries, those compilers are in principle not necessary. Also, it is possible to use the Fortran-to-C compiler f2c from www.netlib.org/f2c to convert Fortran code to C, and compile the resulting C files with a C compiler and create a library containing the required third party dependencies. We have tested and used this in connection with the Microsoft Visual C++ compiler, and instructions on how to use it in this context are given below.
Andreas Waechter 2010-12-22