On Feb 10, 2018, at 11:29 AM, Éric Chamberland
<eric.chamberl...@giref.ulaval.ca> wrote:
Hi Matthew,
Yes, I heard that the MPI C++ API has been deprecated.
Yes, the mpi_cxx is now missing. Our link line is formed mainly with
PETSC_WITH_EXTERNAL_LIB variable that is now:
PETSC_WITH_EXTERNAL_LIB = -L/opt/petsc-master_debug/lib
-Wl,-rpath,/opt/petsc-master_debug/lib -L/opt/petsc-master_debug/lib
-L/opt/intel/composer_xe_2015.2.164/mkl/lib/intel64
-Wl,-rpath,/opt/intel/composer_xe_2015.2.164/mkl/lib/intel64
-Wl,-rpath,/opt/openmpi-1.10.2/lib -L/opt/openmpi-1.10.2/lib
-Wl,-rpath,/usr/lib/gcc/x86_64-redhat-linux/4.8.5
-L/usr/lib/gcc/x86_64-redhat-linux/4.8.5
-Wl,-rpath,/opt/intel/composer_xe_2015.2.164/compiler/lib/intel64
-L/opt/intel/composer_xe_2015.2.164/compiler/lib/intel64
-Wl,-rpath,/opt/intel/composer_xe_2015.2.164/ipp/lib/intel64
-L/opt/intel/composer_xe_2015.2.164/ipp/lib/intel64
-Wl,-rpath,/opt/intel/composer_xe_2015.2.164/tbb/lib/intel64/gcc4.4
-L/opt/intel/composer_xe_2015.2.164/tbb/lib/intel64/gcc4.4 -lpetsc -lsuperlu
-lsuperlu_dist -lHYPRE -lcmumps -ldmumps -lsmumps -lzmumps -lmumps_common
-lpord -lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64 -lml -lumfpack -lklu
-lcholmod -lbtf -lccolamd -lcolamd -lcamd -lamd -lsuitesparseconfig
-lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -lmkl_blacs_intelmpi_lp64
-liomp5 -ldl -lpthread -lparmetis -lmetis -lptesmumps -lptscotch -lptscotcherr
-lesmumps -lscotch -lscotcherr -lm -lX11 -lstdc++ -ldl -lmpi_usempi -lmpi_mpifh
-lmpi -lgfortran -lm -lgfortran -lm -lgcc_s -lquadmath -lpthread -lrt -lm
-lpthread -lz -lstdc++ -ldl
We add some stuff to this (our own compiled libs), but nothing related to MPI
or PETSc since we used to rely on PETSC_WITH_EXTERNAL_LIB for all our
diffrement environments (think about different petsc version, MPI libs and
compilers: clang, icc, g++) and it used to work until yesterday changes...
As you can see in the diff, this "block" of libraries have been removed from
PETSC_WITH_EXTERNAL_LIB: (the -- is part of the diff output):
--ldl
--lmpi_cxx
--lmpi
--lstdc++
--lm
--lgcc_s
--lpthread
and into this block there was the "-lmpi_cxx" that we need...
I could send you our whole line of link, but the error is into this small
change introduced yesterday into master...
Thanks a lot!
Eric
Le 18-02-10 à 10:34, Matthew Knepley a écrit :
On Sat, Feb 10, 2018 at 9:42 AM, Éric Chamberland
<eric.chamberl...@giref.ulaval.ca> wrote:
Hi,
we used to link our c++ code with PETSc using PETSC_WITH_EXTERNAL_LIB variable
defined in $PETSC_DIR/lib/petsc/conf/petscvariables and everything was fine
until this night.
It seems some libs have vanished from this variable, see the diff here:
-lptscotcherr
-lesmumps
-lscotch
-lscotcherr
-lm
-lX11
+-lstdc++
-ldl
-lmpi_usempi
-lmpi_mpifh
-lmpi
-lgfortran
-lm
-lgfortran
-lm
-lgcc_s
-lquadmath
-lpthread
--ldl
--lmpi_cxx
--lmpi
--lstdc++
--lm
--lgcc_s
--lpthread
-lrt
-lm
-lpthread
-lz
+-lstdc++
-ldl
causing these errors at link phase for us:
/pmi/cmpbib/compilation_BIB_gcc_redhat_petsc-master_debug/COMPILE_AUTO/GIREF/obj/dev/StatistiqueMemoire.o:
In function `MPI::Op::Init(void (*)(void const*, void*, int, MPI::Datatype
const&), bool)':
/opt/openmpi-1.10.2/include/
openmpi/ompi/mpi/cxx/op_inln.
h:122: undefined reference to `ompi_mpi_cxx_op_intercept'
/pmi/cmpbib/compilation_BIB_gcc_redhat_petsc-master_debug/COMPILE_AUTO/GIREF/obj/dev/StatistiqueMemoire.o:
In function `MPI::Intracomm::Create_graph(int, int const*, int const*, bool)
const':
/opt/openmpi-1.10.2/include/
openmpi/ompi/mpi/cxx/
intracomm.h:25: undefined reference to `MPI::Comm::Comm()'
/pmi/cmpbib/compilation_BIB_gcc_redhat_petsc-master_debug/COMPILE_AUTO/GIREF/obj/dev/StatistiqueMemoire.o:
In function `MPI::Intercomm::Merge(bool) const':
/opt/openmpi-1.10.2/include/
openmpi/ompi/mpi/cxx/
intracomm_inln.h:23: undefined reference to `MPI::Comm::Comm()'
/pmi/cmpbib/compilation_BIB_gcc_redhat_petsc-master_debug/COMPILE_AUTO/GIREF/obj/dev/StatistiqueMemoire.o:
In function `MPI::Intracomm::Split(int, int) const':
/opt/openmpi-1.10.2/include/
openmpi/ompi/mpi/cxx/
intracomm_inln.h:23: undefined reference to `MPI::Comm::Comm()'
/pmi/cmpbib/compilation_BIB_gcc_redhat_petsc-master_debug/COMPILE_AUTO/GIREF/obj/dev/StatistiqueMemoire.o:
In function `MPI::Intracomm::Create(MPI::Group const&) const':
/opt/openmpi-1.10.2/include/
openmpi/ompi/mpi/cxx/
intracomm_inln.h:23: undefined reference to `MPI::Comm::Comm()'
/pmi/cmpbib/compilation_BIB_gcc_redhat_petsc-master_debug/COMPILE_AUTO/GIREF/obj/dev/StatistiqueMemoire.o:
In function `MPI::Intracomm::Clone() const':
Hi Eric,
These symbols are all coming from -lmpi_cxx. I would note that I believe the
MPI Forum has deprecated the C++ interface, so it will
eventually go away. However, lets fix this. In the configure log, I see that
mpicxx -show has that library in it, so it seems that the link
is not being done with the C++ compiler. Can you send the whole link line?
Thanks,
Matt
Is this a normal and definitive change or an unwanted/unobserved bug?
Thanks,
Eric
ps: here are the logs:
this night:
---------
http://www.giref.ulaval.ca/~cmpgiref/petsc-master-debug/2018.02.10.02h00m01s_configure.log
http://www.giref.ulaval.ca/~cmpgiref/petsc-master-debug/2018.02.10.02h00m01s_make.log
a day before:
------------
http://www.giref.ulaval.ca/~cmpgiref/petsc-master-debug/2018.02.09.02h00m02s_configure.log
http://www.giref.ulaval.ca/~cmpgiref/petsc-master-debug/2018.02.09.02h00m02s_make.log
--
What most experimenters take for granted before they begin their experiments is
infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/