GEOS-DEV / GEOS

GEOS Simulation Framework
GNU Lesser General Public License v2.1
221 stars 89 forks source link

[Bug] Linking errors on Lassen with gcc-8.3.1 #1057

Closed francoishamon closed 4 years ago

francoishamon commented 4 years ago

Describe the bug I am trying to compile the latest developon Lassen with gcc-8.3.1. In Release and in Debug, I get the following errors at the end of the compilation:

[ 93%] Linking CXX executable ../../../tests/testRecursiveFieldApplication
[ 93%] Linking CXX executable ../../../tests/testShapeFunctionKernel
[ 93%] Built target testCapillaryPressure
Scanning dependencies of target testNeighborCommunicator
[ 93%] Building CUDA object coreComponents/mpiCommunications/unitTests/CMakeFiles/testNeighborCommunicator.dir/testNeighborCommunicator.cpp.o
../../../lib/libmesh.a(CellElementSubRegion.cpp.o): In function `geosx::CellElementSubRegion::CellElementSubRegion(std::string const&, geosx::dataRepository::Group*)':
tmpxft_000151e6_00000000-5_CellElementSubRegion.cudafe1.cpp:(.text+0x5034): undefined reference to `geosx::dataRepository::WrapperBase::WrapperBase(std::string const&, geosx::dataRepository::Group*)'
tmpxft_000151e6_00000000-5_CellElementSubRegion.cudafe1.cpp:(.text+0x55f8): undefined reference to `geosx::dataRepository::WrapperBase::~WrapperBase()'
../../../lib/libmesh.a(CellElementSubRegion.cpp.o): In function `geosx::CellElementSubRegion::CopyFromCellBlock(geosx::CellBlock*)':
tmpxft_000151e6_00000000-5_CellElementSubRegion.cudafe1.cpp:(.text+0x6d30): undefined reference to `geosx::ObjectManagerBase::ConstructGlobalToLocalMap()'
../../../lib/libmesh.a(CellElementSubRegion.cpp.o): In function `geosx::CellElementSubRegion::ViewPackingExclusionList(LvArray::SortedArray<long, long, LvArray::NewChaiBuffer>&) const':
tmpxft_000151e6_00000000-5_CellElementSubRegion.cudafe1.cpp:(.text+0x6f8c): undefined reference to `geosx::ObjectManagerBase::ViewPackingExclusionList(LvArray::SortedArray<long, long, LvArray::NewChaiBuffer>&) const'
../../../lib/libmesh.a(CellElementSubRegion.cpp.o):(.toc+0x18): undefined reference to `typeinfo for geosx::dataRepository::WrapperBase'
../../../lib/libmesh.a(CellElementSubRegion.cpp.o): In function `geosx::dataRepository::Wrapper<LvArray::Array<double, 3, camp::int_seq<long, 2l, 1l, 0l>, long, LvArray::NewChaiBuffer> >::PackByIndexSize(LvArray::ArrayView<long const, 1, 0, long, LvArray::NewChaiBuffer> const&, bool) const':
tmpxft_000151e6_00000000-5_CellElementSubRegion.cudafe1.cpp:(.text._ZNK5geosx14dataRepository7WrapperIN7LvArray5ArrayIdLi3EN4camp7int_seqIlJLl2ELl1ELl0EEEElNS2_13NewChaiBufferEEEE15PackByIndexSizeERKNS2_9ArrayViewIKlLi1ELi0ElS7_EEb[_ZNK5geosx14dataRepository7WrapperIN7LvArray5ArrayIdLi3EN4camp7int_seqIlJLl2ELl1ELl0EEEElNS2_13NewChaiBufferEEEE15PackByIndexSizeERKNS2_9ArrayViewIKlLi1ELi0ElS7_EEb]+0xcc): undefined reference to `std::enable_if<can_memcpy<double>, long>::type geosx::bufferOps::PackByIndexDevice<false, double, 3, 0, LvArray::ArrayView<long const, 1, 0, long, LvArray::NewChaiBuffer> >(signed char*&, LvArray::ArrayView<double const, 3, 0, long, LvArray::NewChaiBuffer> const&, LvArray::ArrayView<long const, 1, 0, long, LvArray::NewChaiBuffer> const&)'

This is the first error but the error message is actually very long.

To Reproduce Steps to reproduce the behavior:

  1. Checkout develop
  2. Compile with gcc-8.3.1 in debug or release

Expected behavior It should compile.

Platform (please complete the following information):

Additional context It compiles fine with clang. I was getting the same errors before #937 was merged.

corbett5 commented 4 years ago

I have a fix in https://github.com/GEOSX/LvArray/pull/185