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:
The IPOPT library also has mechanisms to load the linear solvers MA27, MA57, HSL_MA77, HSL_MA86, HSL_MA97, and Pardiso from a shared library at runtime, if the library has not been compiled with them (see Section 2.3.6).
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, HSL_MA77, HSL_MA86, HSL_MA97, 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 also searches for a Fortran compiler, 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 http://www.netlib.org/f2c to convert Fortran 77 code to C, and compile the resulting C files with a C compiler and create a library containing the required third party dependencies.
When using GNU compilers, we recommend you use the same version numbers for gcc, g++, and gfortran. For gfortran specifically, we recommend versions newer than 4.5.2 (versions 4.5.1, 4.5.2, and before 4.2.0 are known to have bugs that caused issues with some of the newer Fortran 90 HSL linear solvers).