[Ipopt] MA86 and MA97 Segfault with OpenMP

Breannan Smith smith at cs.columbia.edu
Thu May 23 11:50:39 EDT 2013


Adding FC=ifort and ADD_FCFLAGS="-openmp" to configure doesn't seem to
change the behavior -- the hs071 example still segfaults with MA86 and
MA97. That is:

# The following configure leads to segfaults in hs071 with MA86 and MA97
../configure CXX=icpc CC=icc F77=ifort FC=ifort ADD_CFLAGS="-openmp"
ADD_FFLAGS="-openmp" ADD_CXXFLAGS="-openmp" ADD_FCFLAGS="-openmp"

I've attached a patch for hs071_main.cpp that simply adds a line to change
the linear solver. To produce the segfault:

# Apply the patch to a clean version of Ipopt-3.11.0
patch Ipopt/examples/hs071_cpp/hs071_main.cpp < hs071_main.patch

# Create and configure a build with the Intel suite
mkdir build
cd build
../configure CXX=icpc CC=icc F77=ifort FC=ifort ADD_CFLAGS="-openmp"
ADD_FFLAGS="-openmp" ADD_CXXFLAGS="-openmp" ADD_FCFLAGS="-openmp"

# Make and make test
make
make test

# To obtain a backtrace, from the build directory
idbc ./Ipopt/test/.libs/lt-hs071_cpp

I'm happy to answer any questions!

Best regards,
Breannan Smith
smith at cs.columbia.edu







On Thu, May 23, 2013 at 4:05 AM, Jonathan Hogg <jonathan.hogg at stfc.ac.uk>wrote:

>  First question, does adding FC=ifort ADD_FCFLAGS="-openmp" to configure
> and recompiling from scratch fix things?
>
> If not, is it possible to supply me with a copy of your code so I can
> attempt to reproduce the problem? I can't recall whether the Ipopt driver
> shipped with the option to dump matrices, but if it did a matrix dump of
> iteration zero might be easier?
>
> Thanks,
>
> Jonathan.
>
>
> On 23/05/13 04:32, Breannan Smith wrote:
>
> Further investigation reveals that this problem arises with the Intel
> compiler suite but not with the GCC suite. More concretely:
>
>  # Configuring/building with the Intel compiler suite leads to a segfault
> with MA86 and MA97 for hs071_main
> ../configure CXX=icpc CC=icc F77=ifort ADD_CFLAGS="-openmp"
> ADD_FFLAGS="-openmp" ADD_CXXFLAGS="-openmp"
>
>  # Configuring/building with the GCC suite works with MA86 and MA97 for
> hs071_main
> ../configure CXX=g++ CC=gcc F77=gfortran ADD_CFLAGS="-fopenmp"
> ADD_FFLAGS="-fopenmp" ADD_CXXFLAGS="-fopenmp"
>
>  For reference, I have run these tests with GCC 4.6.3 and ICC 13.1.1
> 20130313.
>
>  Best regards,
> Breannan Smith
>  smith at cs.columbia.edu
>
>
>
> On Wed, May 22, 2013 at 12:59 PM, Breannan Smith <smith at cs.columbia.edu>wrote:
>
>> Dear Ipopt Community,
>>
>>  I'm attempting to run Ipopt-3.11.0 with the parallel HSL solvers (
>> http://www.hsl.rl.ac.uk/ipopt/) on 64-bit Linux with Intel's compilers
>> (version 13.1.1 20130313), but I encounter a segfault if I execute Ipopt
>> with MA86 or MA97 with OpenMP enabled. I am configuring Ipopt with:
>>
>>  ../configure CXX=icpc CC=icc F77=ifort ADD_CFLAGS=-openmp
>> ADD_FFLAGS=-openmp ADD_CXXFLAGS=-openmp --with-blas="-L$MKLROOT/lib
>> -lmkl_intel_lp64 -lmkl_sequential -lmkl_core"
>>
>>  I am building the HSL libraries with Ipopt as described in
>> the documentation (that is copying coinhsl into ThirdParty/HSL).
>>
>>  If I then modify the C++ test example hs071_main.cpp to use ma97 (e.g.
>> app->Options()->SetStringValue( "linear_solver", "ma97" )), build, and
>> execute, the code segfaults in hsl_mc78_integer_mp_mc78_col_counts_integer_
>> (backtrace included below). This same example runs fine with ma27, ma57,
>> and mumps.
>>
>>  Any thoughts, tips, tricks, or suggestions as to the cause of this
>> segfault?
>>
>>  Thanks, I'm happy to run more tests or provide more details!
>>
>>  Best regards,
>> Breannan Smith
>> smith at cs.columbia.edu
>>
>>  The backtrace:
>>
>>   Program received signal SIGSEGV, Segmentation fault.
>> 0x00007ffff71b9701 in hsl_mc78_integer_mp_mc78_col_counts_integer_ ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/ThirdParty/HSL/.libs/libcoinhsl.so.1
>> (gdb) bt
>> #0  0x00007ffff71b9701 in hsl_mc78_integer_mp_mc78_col_counts_integer_ ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/ThirdParty/HSL/.libs/libcoinhsl.so.1
>> #1  0x00007ffff729b031 in hsl_ma97_double_mp_get_nzl_ ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/ThirdParty/HSL/.libs/libcoinhsl.so.1
>> #2  0x00007ffff7298d9e in hsl_ma97_double_mp_compute_order_ ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/ThirdParty/HSL/.libs/libcoinhsl.so.1
>> #3  0x00007ffff72962ea in hsl_ma97_double_mp_analyse_double_ ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/ThirdParty/HSL/.libs/libcoinhsl.so.1
>> #4  0x00007ffff72cd1c1 in ma97_analyse_d ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/ThirdParty/HSL/.libs/libcoinhsl.so.1
>> #5  0x00007ffff7adf37e in
>> Ipopt::Ma97SolverInterface::InitializeStructure(int, int, int const*, int
>> const*) ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #6  0x00007ffff7ad2e19 in
>> Ipopt::TSymLinearSolver::InitializeStructure(Ipopt::SymMatrix const&) ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #7  0x00007ffff7ad1a35 in
>> Ipopt::TSymLinearSolver::MultiSolve(Ipopt::SymMatrix const&,
>> std::vector<Ipopt::SmartPtr<Ipopt::Vector const>,
>> std::allocator<Ipopt::SmartPtr<Ipopt::Vector const> > >&,
>> std::vector<Ipopt::SmartPtr<Ipopt::Vector>,
>> std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >&, bool, int) () from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #8  0x00007ffff7ac2d1f in
>> Ipopt::StdAugSystemSolver::MultiSolve(Ipopt::SymMatrix const*, double,
>> Ipopt::Vector const*, double, Ipopt::Vector const*, double, Ipopt::Matrix
>> const*, Ipopt::Vector const*, double, Ipopt::Matrix const*, Ipopt::Vector
>> const*, double, std::vector<Ipopt::SmartPtr<Ipopt::Vector const>,
>> std::allocator<Ipopt::SmartPtr<Ipopt::Vector const> > >&,
>> std::vector<Ipopt::SmartPtr<Ipopt::Vector const>,
>> std::allocator<Ipopt::SmartPtr<Ipopt::Vector const> > >&,
>> std::vector<Ipopt::SmartPtr<Ipopt::Vector const>,
>> std::allocator<Ipopt::SmartPtr<Ipopt::Vector const> > >&,
>> std::vector<Ipopt::SmartPtr<Ipopt::Vector const>,
>> std::allocator<Ipopt::SmartPtr<Ipopt::Vector const> > >&,
>> std::vector<Ipopt::SmartPtr<Ipopt::Vector>,
>> std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >&,
>> std::vector<Ipopt::SmartPtr<Ipopt::Vector>,
>> std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >&,
>> std::vector<Ipopt::SmartPtr<Ipopt::Vector>,
>> std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >&,
>> std::vector<Ipopt::SmartPtr<Ipopt::Vector>,
>> std::allocator<Ipopt::SmartPtr<Ipopt::Vector> > >&, bool, int) ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #9  0x00007ffff79e81c2 in Ipopt::AugSystemSolver::Solve(Ipopt::SymMatrix
>> const*, double, Ipopt::Vector const*, double, Ipopt::Vector const*, double,
>> Ipopt::Matrix const*, Ipopt::Vector const*, double, Ipopt::Matrix const*,
>> Ipopt::Vector const*, double, Ipopt::Vector const&, Ipopt::Vector const&,
>> Ipopt::Vector const&, Ipopt::Vector const&, Ipopt::Vector&, Ipopt::Vector&,
>> Ipopt::Vector&, Ipopt::Vector&, bool, int) ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #10 0x00007ffff7a558d6 in
>> Ipopt::LeastSquareMultipliers::CalculateMultipliers(Ipopt::Vector&,
>> Ipopt::Vector&) ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #11 0x00007ffff79fea70 in
>> Ipopt::DefaultIterateInitializer::least_square_mults(Ipopt::Journalist
>> const&, Ipopt::IpoptNLP&, Ipopt::IpoptData&,
>> Ipopt::IpoptCalculatedQuantities&,
>> Ipopt::SmartPtr<Ipopt::EqMultiplierCalculator> const&, double) ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #12 0x00007ffff7a02862 in
>> Ipopt::DefaultIterateInitializer::SetInitialIterates() ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #13 0x00007ffff7a195c2 in Ipopt::IpoptAlgorithm::InitializeIterates() ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #14 0x00007ffff7a127e1 in Ipopt::IpoptAlgorithm::Optimize(bool) ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #15 0x00007ffff798a542 in Ipopt::IpoptApplication::call_optimize() ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #16 0x00007ffff7989ca0 in
>> Ipopt::IpoptApplication::OptimizeNLP(Ipopt::SmartPtr<Ipopt::NLP> const&,
>> Ipopt::SmartPtr<Ipopt::AlgorithmBuilder>&) ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #17 0x00007ffff7989978 in
>> Ipopt::IpoptApplication::OptimizeNLP(Ipopt::SmartPtr<Ipopt::NLP> const&) ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #18 0x00007ffff79898fa in
>> Ipopt::IpoptApplication::OptimizeTNLP(Ipopt::SmartPtr<Ipopt::TNLP> const&)
>> ()
>>    from
>> /proj/cg/users/smith/research_current/gr/code/libs/Ipopt-3.11.0/build/Ipopt/src/Interfaces/.libs/libipopt.so.1
>> #19 0x0000000000402047 in main ()
>>
>>
>
>
> _______________________________________________
> Ipopt mailing listIpopt at list.coin-or.orghttp://list.coin-or.org/mailman/listinfo/ipopt
>
>
>
> --
> Scanned by iCritical.
>
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20130523/b3ec204a/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hs071_main.patch
Type: application/octet-stream
Size: 519 bytes
Desc: not available
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20130523/b3ec204a/attachment-0001.obj>


More information about the Ipopt mailing list