[Ipopt] Building IPOPT on MAC using Intel MKL

Simeon Nifos archwndas at googlemail.com
Thu Dec 17 19:41:42 EST 2009


Dear Andreas,
Thank you for the really great piece of software but mostly for time
you spend supporting all your users. I have one of the latest MAC
Pros, and I have a hard time to configure Ipopt. The configure command
I used is:

 CC=gcc CXX=g++ ./configure
--with-blas="-L/opt/mkl/lib/32 -lmkl_sequential -lmkl_intel -lmkl_core"
--with-lapack="-L/opt/mkl/lib/32 -lmkl_lapack"
--with-pardiso="-L/opt/pardiso -lpardiso400_GNU_MACOSX32 -lgomp -lgfortran"

Configure stops when it is trying to see if my BLAS provided library
works, complaining that it doesn't. I checked the config.log but I
didn't find some useful information there to help me understand what
goes wrong. It would be very helpful for us if the config.log included
the output of the compilation performed for each test, as for instance
when you are trying to figure out if BLAS works or not. MAC OS is a
bit tricky because you have to do the following if you want things to
run when linking to shared libraries:

$ export DYLD_LIBRARY_PATH=/opt/mkl/lib/32

same story as in Linux but with different name. I have another
blas-benchmark code of mine where I test the performance of different
blas libraries on dgemv, dgemm, dtrsv etc. If I provide the above
defined blas and export command everything compiles links and runs
fine.

Disappointed, I tried another trick. I ran the get.Blas script in
ThirdParty/Blas. I changed the configured command to:

 CC=gcc CXX=g++ ./configure ,

hoping that after everything is done and libraries have been created,
I could link with MKL BLAS and Pardiso without problems. However,
after successful configuration the command

$ make

stopped unexpectedly with the following errors:

IpBlas.cpp:16: error: 'ddot' was not declared in this scope
IpBlas.cpp:16: error: 'DDOT' was not declared in this scope
IpBlas.cpp:16: error: initializer expression list treated as compound expression
IpBlas.cpp:16: error: expected ',' or ';' before '(' token
IpBlas.cpp:19: error: redefinition of 'double F77_FUNC'
IpBlas.cpp:16: error: 'double F77_FUNC' previously defined here
IpBlas.cpp:19: error: 'dnrm2' was not declared in this scope
IpBlas.cpp:19: error: 'DNRM2' was not declared in this scope
IpBlas.cpp:21: error: redefinition of 'double F77_FUNC'
IpBlas.cpp:16: error: 'double F77_FUNC' previously defined here
IpBlas.cpp:21: error: 'dasum' was not declared in this scope
IpBlas.cpp:21: error: 'DASUM' was not declared in this scope
IpBlas.cpp:23: error: conflicting declaration 'ipfint F77_FUNC'
IpBlas.cpp:16: error: 'F77_FUNC' has a previous declaration as 'double F77_FUNC'
IpBlas.cpp:23: error: 'idamax' was not declared in this scope
IpBlas.cpp:23: error: 'IDAMAX' was not declared in this scope
IpBlas.cpp:25: error: variable or field 'F77_FUNC' declared void

and many more errors like the above ones.

Any help would be more than welcome.

All my best,
Simeon.



More information about the Ipopt mailing list