[COIN-DISCUSS] Problems with MPI application using COIN

YANG YUAN erry.yuan at gmail.com
Wed Jun 20 13:00:56 EDT 2007


Hi,

I am working on a MPI application using COIN-cbc, clp as solvers. The COIN
shared libraries have been made using gcc, however, my own MPI program
together with COIN failed to compile using mpicc (a compiler and linker
constructed for MPI application). Instead, i use the intel C++ compiler
"icpc" together with some necessary MPI lib and include files.
Fortunately, the compilation and linking are fine, but on the other hand,
probably it is one of the reason that causes the following errors.

If I add the link flags -cxxlib-gcc or -shared while linking my program with
COIN shared libraries. the executable can be successfully generated.
However, everytime i run it, it directly gives me a seg fault even without
getting into the main function. it is proved by no output of the first
"printf", as shown below.

#include ***

int
main (int argc, char *argv[])
{
   printf ("Beginning of the code.\n");
......
}



If I get rid of the link flags -cxxlib-gcc or -shared, the above seg fault
is gone. and the Coin utility functions seem to work fine, but it fails to
solve a simple MIP problem with output "Cbc: LP relaxation is infeasible or
too expensive". I write the MIP out, actually the problem is ok and it can
be solved very easily.

I am suspecting that there might exist some linking errors, so that although
the libraries (-lCbc -lCgl -lOsiClp -lOsiCbc -lOsi -lClp -lCoinUtils) have
been linked, they don't function well. I sense the usage of shared libraries
might also be a problem, but so far i have no luck in finding what's wrong.
If you have any idea or some experience with using MPI and COIN together,
please kindly provide me some directions. Any suggestion is extremely
appreciated!

Thanks!

yang

p.s. The following is the makefile i am using:

/******************************************

D2BAC=$(HOME)/D2-MPI

CXX = icpc

# C++ Compiler options
CXXFLAGS = -O2 -unroll0 -mp1 -w -ip
# -cxxlib-gcc -gcc-version=323

# additional C++ Compiler options for linking
CXXLINKFLAGS =
#-Wl,--rpath -Wl,/home/osu4502/Coin-Cbc/lib -cxxlib-gcc

# Directory with COIN header files
COININCDIR = $(HOME)/Coin-Cbc-T1/include

# Directory with COIN libraries
COINLIBDIR = $(HOME)/Coin-Cbc-T1/lib

# Directory with C library and header files
CINCDIR = /usr/local/intel-8.0-20040716/include/c++
CLIBDIR = /usr/local/intel-8.0-20040716/lib

# Libraries necessary to link with Clp
LIBS = -L$(COINLIBDIR) -lCbc -lCgl -lOsiClp -lOsiCbc -lOsi -lClp -lCoinUtils
\
        -lm -lc \
        `cat $(COINLIBDIR)/cgl_addlibs.txt` \
        `cat $(COINLIBDIR)/osi_addlibs.txt` \
        `cat $(COINLIBDIR)/clp_addlibs.txt` \
        `cat $(COINLIBDIR)/coinutils_addlibs.txt`

# ------------------------------------------------------------

clean :
        /bin/rm -rf *.o *~

realclean :
        /bin/rm -rf *.o *~
        /bin/rm -rf *.mps *.ord *.sos *.lp *.sav *.net *.msg

# ------------------------------------------------------------

d2alg: d2algFuncsV2.o  d2algMainV2.o COINInterface.o
        $(CXX) $(CXXLINKFLAGS) d2algMainV2.o d2algFuncsV2.o COINInterface.o
-o d2alg  $(MPI_LIBS) $(LIBS)
COINInterface.o: $(D2BAC)/ COINInterface.c
        $(CXX) -c $(MPI_CFLAGS) $(CXXFLAGS) -I$(COININCDIR)
$(D2BAC)/COINInterface.c -o COINInterface.o
d2algMainV2.o: $(D2BAC)/ d2algMainV2.c
        $(CXX) -c $(MPI_CFLAGS) $(CXXFLAGS) -I$(COININCDIR)
$(D2BAC)/d2algMainV2.c -o d2algMainV2.o
d2algFuncsV2.o: $(D2BAC)/ d2algFuncsV2.c
        $(CXX) -c $(MPI_CFLAGS) $(CXXFLAGS) -I$(CINCDIR) -I$(COININCDIR)
$(D2BAC)/d2algFuncsV2.c -o d2algFuncsV2.o
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/coin-discuss/attachments/20070620/7ff08097/attachment.html>


More information about the Coin-discuss mailing list