András Aszódi

Sapere aude!

IpOpt download and installation page

IpOpt is an interior-point nonlinear optimizer. It requires some third-party code to run, which can be a minor PITA to collect. I have put together a tarfile containing IpOpt Version 3.12.7 that includes the HSL Solver Library (Version 2015.06.23), the "old" version of METIS graph partitioning / fill-reducing matrix ordering package, and the MUMPS parallel direct solver in the appropriate source subdirectories.

Note that I obtained the HSL source subject to their academic licensing terms, which in particular forbids redistribution for commercial purposes. Please use this version of IpOpt only in free-and-open-source projects.

Download my IpOpt package

Installation instructions

Uncompress and extract the downloaded tarfile. Change to the ipopt/current subdirectory and create a build directory there (we will call it build). Decide on the installation directory, we will call the full path to it $INSTDIR. Change to the build directory, configure, build and install IpOpt there.

Installation on Linux

Tested on Ubuntu 16.04 LTS, SuSE OpenLeap, Debian 9... Recipes are given for the GNU compilers and for the Intel compiler suite.

GNU compiler collection

Requires GCC, G++, Gfortran Version 5.x or above.

Configure:

../configure --prefix=$INSTDIR --enable-static CC=gcc CXX=g++ FC=gfortran F77=gfortran CXXFLAGS="-std=c++11" OPT_CCFLAGS="-Ofast" OPT_CXXFLAGS="-Ofast" OPT_FCFLAGS="-Ofast"

Build and install:

make -j N
make test
make install

Intel compilers

Tested with the 2017 and 2018 versions of the Parallel Studio compilers.

Configure to use the Intel Math Kernel Library (MKL):

../configure --prefix=$INSTDIR --with-blas="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -liomp5 -lpthread -lm -ldl" CC=icc CXX=icpc FC=ifort F77=ifort CFLAGS="-DMKL_LP64 -qopenmp -I$MKLROOT/include" CXXFLAGS="-std=c++11 -DMKL_LP64 -qopenmp -I$MKLROOT/include" OPT_CCFLAGS="-Ofast" OPT_CXXFLAGS="-Ofast" OPT_FCFLAGS="-Ofast"

Build and install as above.