[petsc-dev] petsc/master: unable to link in C++ with last night PETSC_WITH_EXTERNAL_LIB variable changes

Jeff Hammond jeff.science at gmail.com
Sat Feb 10 14:23:05 CST 2018


On Sat, Feb 10, 2018 at 9:29 AM Éric Chamberland <
Eric.Chamberland at giref.ulaval.ca> wrote:

> Hi Matthew,
>
> Yes, I heard that the MPI C++ API has been deprecated.
>

It was *deprecated* in 2.2 and *deleted* in 3.0. Implementations may not
delete the code but there is absolutely no expectation that it is supported
by any recent implementation.

I fought the MPI Forum until the bitter end about this, by the way, because
we broke existing code in order to save the authors of new MPI
functionality a few minutes of LaTeX boilerplate generation.

It would be almost trivial to extract C++ bindings from MPICH and/or
Open-MPI as a standalone project to fix these issues, but nobody has made
the effort.

Jeff

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.Chamberland at 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.loghttp://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.loghttp://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/ <http://www.caam.rice.edu/%7Emk51/>
>
>
> --
Jeff Hammond
jeff.science at gmail.com
http://jeffhammond.github.io/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20180210/309ea2d8/attachment.html>


More information about the petsc-dev mailing list