[Coin-ipopt] PARDISO linear solver for IPOPT in Matlab

Olaf.Schenk at unibas.ch Olaf.Schenk at unibas.ch
Sun Nov 11 12:07:56 EST 2007


Hi Peter,

Thanks very much for the IPOPT/PARDISO matlab interface.

>1. I built shared libraries for the BLAS and LAPACK routines, libblas.so
> and liblapack.so. It appears that it is necessary to compile the BLAS and
> LAPACK libraries on your own,

I have just one comment on your email. It terms of performance it would be much
better to use LAPACK from ACML/MKL or ATLAS instead of your own compiled Netlib
distribution. The performance of all modern sparse direct solvers
(MUMPS/PARDISO, not MA27) is typically a factor of 10 (!) times faster with
optimized LAPACK libraries.

Best regards,
Olaf Schenk

***
http://www.computational.unibas.ch/cs/people/schenk/
***


Zitat von Peter Carbonetto <pcarbo at cs.ubc.ca>:

> After a great deal of trial and error, I managed to get the Pardiso linear
> solver working for IPOPT with the Matlab interface. My understanding is
> that the Pardiso solver performs quite well (as the 2005 study by Gould,
> Yu and Scott suggests) so I thought it might be interest to describe my
> installation procedure.
>
> I downloaded the Intel 32-bit PARDISO library that was compiled using gcc
> 4.1.0. As it so happens, my copy of MATLAB is version 7.5, and it was
> compiled using gcc 4.1.1. So there is some hope that the libraries will
> link properly.
>
> Here are the basic steps I followed:
>
> 1. I built shared libraries for the BLAS and LAPACK routines, libblas.so
> and liblapack.so. It appears that it is necessary to compile the BLAS and
> LAPACK libraries on your own, rather than let the IPOPT installation do
> the work if you were to follow the default installation steps described in
> the manual. I used gfortran to compile the Fortran code and built the
> libraries with the commands:
>
>    gfortran -fPIC -fexceptions -funroll-all-loops -O3 -shared \
>      -o libblas.so *.f
>
>    gfortran -fPIC -fexceptions -funroll-all-loops -O3 -shared \
>      -o liblapack.so *.f
>
> 2. I downloaded the PARDISO library. I put the pardiso.lic license file
> in the directory pointed to by the environment ariable PARDISO_LIC_PATH. I
> also set the environment variable OMP_NUM_THREADS to 1.
>
> 3. Next, I downloaded and unpacked the latest release of IPOPT (version
> 3.3.3). I configured IPOPT with something like:
>
>    ./configure CC=gcc CXX=g++ F77=gfortran                             \
>      --with-blas="-L$HOME/blas -lblas"                                 \
>      --with-lapack="-L$HOME/lapack -llapack"                           \
>      --with-pardiso="-L$HOME/pardiso -lpardiso_GFORTRAN_IA32"          \
>      ADD_CXXFLAGS="-fPIC -fexceptions" ADD_CFLAGS="-fPIC -fexceptions" \
>      ADD_FFLAGS="-fPIC -fexceptions"
>
> 4. I get complaints from the linker when I try to compile one of the C++
> examples. (It may be because I forgot to include the gfortran library in
> the configuration above.) I can, however, run the Matlab interface for
> IPOPT using the Pardiso linear solver. The command I used to compile the
> MEX file looks something like this:
>
>    mex -cxx -O CXX="g++" -L$(IPOPT_HOME)/lib -L$(PARDISO_HOME)         \
>        -L$(BLAS_HOME) -I$(IPOPT_HOME)/include -L$(LAPACK_HOME) -lipopt \
>        -lpardiso_GFORTRAN_IA32 -llapack -lblas -output ipopt.mexglx    \
>        *.cpp
>
> Then I tried an example. I ran the Matlab script examplehs071.m
> located in MatlabInterface/examples/hs071. In order to test the
> PARDISO solver, I modified the call to IPOPT like so:
>
>    x =
> ipopt(x0,lb,ub,lbc,ubc,'computeObjectiveHS071','computeGradientHS071',...
>              'computeConstraintsHS071','computeJacobianHS071',...
>              'computeHessianHS071',[],'',[],'linear_solver','pardiso);
>
> And it works! It converges to the correct solution.
>
> Peter Carbonetto
> Ph.D. Candidate
> Dept. of Computer Science
> University of British Columbia
> _______________________________________________
> Coin-ipopt mailing list
> Coin-ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/coin-ipopt
>




----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.




More information about the Coin-ipopt mailing list