[Ipopt] Ipopt terminates

Paul van Hoven paul.van.hoven at googlemail.com
Tue Mar 15 07:01:22 EDT 2011


Now, I found out that the folder
/usr/lib/../lib64/ contains several compiled versions of  blas, namely

libblas.a  libblas_pic.a  libblas.so  libblas.so.3  libblas.so.3.1.1

I suspect the correct version would be libblas_pic.a.

The verbose option of the matlab mex command gave the following information

----------------------------------------------------------------
->    MATLAB                = /net/matlab/Matlab2009b
->    CC                    = /usr/site-local/bin/g++-4.2
->    CC flags:
         CFLAGS             = -ansi -D_GNU_SOURCE  -fexceptions -fPIC 
-fno-omit-frame-pointer -pthread
         CDEBUGFLAGS        = -g
         COPTIMFLAGS        = -O3 -pipe -DNDEBUG -pedantic-errors 
-Wimplicit -Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith 
-Wwrite-strings -Wconversion -Wno-unknown-pragmas -fPIC -fexceptions  
-DMATLAB_MEXFILE
         CLIBS              = 
-Wl,-rpath-link,/net/matlab/Matlab2009b/bin/glnxa64 
-L/net/matlab/Matlab2009b/bin/glnxa64 -lmx -lmex -lmat -lm -lstdc++
         arguments          =  -DMX_COMPAT_32
->    CXX                   = /usr/site-local/bin/g++-4.2
->    CXX flags:
         CXXFLAGS           = -ansi -D_GNU_SOURCE -fPIC 
-fno-omit-frame-pointer -pthread
         CXXDEBUGFLAGS      = -g
         CXXOPTIMFLAGS      = -O3 -pipe -DNDEBUG -pedantic-errors 
-Wimplicit -Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith 
-Wwrite-strings -Wconversion -Wno-unknown-pragmas -fPIC -fexceptions  
-DMATLAB_MEXFILE
         CXXLIBS            = 
-Wl,-rpath-link,/net/matlab/Matlab2009b/bin/glnxa64 
-L/net/matlab/Matlab2009b/bin/glnxa64 -lmx -lmex -lmat -lm
         arguments          =  -DMX_COMPAT_32
->    FC                    = g95
->    FC flags:
         FFLAGS             = -fexceptions -fPIC -fno-omit-frame-pointer
         FDEBUGFLAGS        = -g
         FOPTIMFLAGS        = -O
         FLIBS              = 
-Wl,-rpath-link,/net/matlab/Matlab2009b/bin/glnxa64 
-L/net/matlab/Matlab2009b/bin/glnxa64 -lmx -lmex -lmat -lm
         arguments          =  -DMX_COMPAT_32
->    LD                    = /usr/site-local/bin/g++-4.2
->    Link flags:
         LDFLAGS            = -pthread -shared 
-Wl,--version-script,/net/matlab/Matlab2009b/extern/lib/glnxa64/mexFunction.map 
-Wl,--no-undefined
         LDDEBUGFLAGS       = -g
         LDOPTIMFLAGS       = -O3 -pipe -DNDEBUG -pedantic-errors 
-Wimplicit -Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith 
-Wwrite-strings -Wconversion -Wno-unknown-pragmas -fPIC -fexceptions  
-DMATLAB_MEXFILE   -Wl,--rpath 
-Wl,/homes/numerik/hoven/CoinIpopt/build/lib/coin -Wl,--rpath 
-Wl,/homes/numerik/hoven/CoinIpopt/build/lib/coin/ThirdParty
         LDEXTENSION        = .mexa64
         arguments          =  -L/homes/numerik/hoven/Mex/Ipopt/lib/coin 
-L/homes/numerik/hoven/Mex/Ipopt/lib/coin/ThirdParty 
-L/net/site-local.linux64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.2.4 
-L/net/site-local.linux64/bin/../lib/gcc 
-L/usr/site-local/lib/gcc/x86_64-unknown-linux-gnu/4.2.4 
-L/net/site-local.linux64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../../../lib64 
-L/usr/site-local/lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../../../lib64 
-L/lib/../lib64 -L/usr/lib/../lib64 
-L/net/site-local.linux64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../.. 
-L/usr/site-local/lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../.. 
-lipopt -llapack -lblas -ldl -lcoinhsl -lgfortranbegin -lgfortran -lm 
-lgcc_s
->    LDCXX                 =
->    Link flags:
         LDCXXFLAGS         =
         LDCXXDEBUGFLAGS    =
         LDCXXOPTIMFLAGS    =
         LDCXXEXTENSION     =
         arguments          =  -L/homes/numerik/hoven/Mex/Ipopt/lib/coin 
-L/homes/numerik/hoven/Mex/Ipopt/lib/coin/ThirdParty 
-L/net/site-local.linux64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.2.4 
-L/net/site-local.linux64/bin/../lib/gcc 
-L/usr/site-local/lib/gcc/x86_64-unknown-linux-gnu/4.2.4 
-L/net/site-local.linux64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../../../lib64 
-L/usr/site-local/lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../../../lib64 
-L/lib/../lib64 -L/usr/lib/../lib64 
-L/net/site-local.linux64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../.. 
-L/usr/site-local/lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../.. 
-lipopt -llapack -lblas -ldl -lcoinhsl -lgfortranbegin -lgfortran -lm 
-lgcc_s
----------------------------------------------------------------

As you can see it uses the "/lib/../lib64" presumely for blas. How do I 
have to modify the matlab interface Makefile such that the correct PIC 
version of blas is used?

Paul

Paul van Hoven schrieb:
> Hi
>
> I tried to recompile Ipopt with the option "-DFUNNY_LAPACK_FINT" 
> turned on. But then the matlab interface won't compile. I get the 
> following compiliation error:
>
> /usr/site-local/bin/g++-4.2 -O3 -pipe -DNDEBUG -pedantic-errors 
> -Wimplicit -Wparentheses -Wreturn-type -Wcast-qual -Wall 
> -Wpointer-arith -Wwrite-strings -Wconversion -Wno-unknown-pragmas 
> -fPIC -fexceptions -DFUNNY_LAPACK_FINT  -DMATLAB_MEXFILE   -Wl,--rpath 
> -Wl,/homes/numerik/hoven/Mex/Ipopt/lib/coin -Wl,--rpath 
> -Wl,/homes/numerik/hoven/Mex/Ipopt/lib/coin/ThirdParty -pthread 
> -shared 
> -Wl,--version-script,/net/matlab/Matlab2009b/extern/lib/glnxa64/mexFunction.map 
> -Wl,--no-undefined -o  "ipopt.mexa64"   "matlabexception.o"  
> "matlabfunctionhandle.o"  "matlabjournal.o"  "iterate.o"  
> "ipoptoptions.o"  "options.o"  "sparsematrix.o"  
> "callbackfunctions.o"  "matlabinfo.o"  "matlabprogram.o"  "ipopt.o"  
> -L/homes/numerik/hoven/Mex/Ipopt/lib/coin 
> -L/homes/numerik/hoven/Mex/Ipopt/lib/coin/ThirdParty 
> -L/net/site-local.linux64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.2.4 
> -L/net/site-local.linux64/bin/../lib/gcc 
> -L/usr/site-local/lib/gcc/x86_64-unknown-linux-gnu/4.2.4 
> -L/net/site-local.linux64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../../../lib64 
> -L/usr/site-local/lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../../../lib64 
> -L/lib/../lib64 -L/usr/lib/../lib64 
> -L/net/site-local.linux64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../.. 
> -L/usr/site-local/lib/gcc/x86_64-unknown-linux-gnu/4.2.4/../../.. 
> -lipopt -llapack -lblas -ldl -lcoinhsl -lgfortranbegin -lgfortran -lm 
> -lgcc_s -Wl,-rpath-link,/net/matlab/Matlab2009b/bin/glnxa64 
> -L/net/matlab/Matlab2009b/bin/glnxa64 -lmx -lmex -lmat -lm
>
> /usr/bin/ld: /usr/lib/../lib64/libblas.a(isamax.o): relocation 
> R_X86_64_32 against `a local symbol' can not be used when making a 
> shared object; recompile with -fPIC
> /usr/lib/../lib64/libblas.a: could not read symbols: Bad value
> collect2: ld returned 1 exit status
>
>    mex: link of ' "ipopt.mexa64"' failed.
>
> make: *** [ipopt.mexa64] Error 1
>
> Why does that happen now?
>
> Paul
>
>
>
> Andreas Waechter schrieb:
>> Hi
>>
>> Well, it might also just be a problem with Lapack and matlab and 
>> 64bit and funny integer types.  The error message is from LAPACK, and 
>> given that the signature is
>>
>>            SUBROUTINE DPOTRF( UPLO, N, A, LDA, INFO )
>>
>>            CHARACTER      UPLO
>>
>>            INTEGER        INFO, LDA, N
>>
>>            DOUBLE         PRECISION A( LDA, * )
>>
>> and therefore LDA seems to have an illegal value, it might be that 
>> Fortran and C integer types do not match.
>>
>> This might be related to a recent discussion on the Ipopt mailing list:
>>
>> http://list.coin-or.org/pipermail/ipopt/2011-March/002376.html
>>
>> And I have also seen a similar problem in a different context (not 
>> with matlab but also related to different integer types).  For this 
>> specific case, I added some code in Ipopt/src/LinAlg/IpLapack.cpp 
>> (look for the macro FUNNY_LAPACK_FINT).  I suggest you try to 
>> activate this code by configuring with
>>
>> ADD_CXXFLAGS='-DFUNNY_LAPACK_FINT'
>>
>> and recompiling everything (after 'make clean').  Not sure if that 
>> will help, but it might be worth a try...
>>
>> Andreas
>>
>> On Mon, 14 Mar 2011, Stefan Vigerske wrote:
>>
>>> Hi,
>>>
>>> it probably means that the jacobian or hessian contains values like nan
>>> or inf, which may be a result from a nondifferentiability of one of 
>>> your
>>> functions in the current point.
>>>
>>> There is the Ipopt option check_derivatives_for_naninf
>>> http://www.coin-or.org/Ipopt/documentation/node89.html
>>> which may help to verify this.
>>>
>>> Stefan
>>>
>>>> I'm using ipopt with the matlab interface. So far everything went fine
>>>> and I had no problems. But now I have a problem, that can be solve 
>>>> with
>>>> matlab's fmincon but not with ipopt. When I run the problem with 
>>>> ipopt I
>>>> get the following error message
>>>>
>>>>  ** On entry to DPOTRF parameter number  4 had an illegal value
>>>>
>>>> I do not understand what this means.
>>>>
>>>> Paul
>>>>
>>>> _______________________________________________
>>>> Ipopt mailing list
>>>> Ipopt at list.coin-or.org
>>>> http://list.coin-or.org/mailman/listinfo/ipopt
>>>>
>>>
>>>
>>> -- 
>>> Stefan Vigerske
>>> Humboldt University Berlin, Numerical Mathematics
>>> http://www.math.hu-berlin.de/~stefan
>>>
>>> _______________________________________________
>>> Ipopt mailing list
>>> Ipopt at list.coin-or.org
>>> http://list.coin-or.org/mailman/listinfo/ipopt
>>>
>>>
>



More information about the Ipopt mailing list