Linking error with CUDA 18.8 and 20.2

Building an application (latest GEOS) with GCC 10.4.0 and CUDA 11.8 started generating

...
[ 58%] Linking CUDA device code CMakeFiles/geosx_core.dir/cmake_device_link.o
nvlink error   : Size doesn't match for '_ZN4geos13finiteElement18ImplicitKernelBaseINS_20CellElementSubRegionENS_12constitutive11PorousSolidINS3_16ElasticIsotropicEEENS0_25H1_Wedge_Lagrange1_Gauss6ELi3ELi3EE14StackVariablesC1Ev$575' in '../lib/libphysicsSolvers.a:PoromechanicsEFEMKernels_CellElementSubRegion_PorousSolid-ElasticIsotropic-_H1_Wedge_Lagrange1_Gauss6.cpp.o', first specified in '../lib/libphysicsSolvers.a:SolidMechanicsFixedStressThermoPoroElasticKernels_CellElementSubRegion_PorousSolid-ElasticIsotropic-_H1_Wedge_Lagrange1_Gauss6.cpp.o' (target: sm_80)
nvlink fatal   : merge_elf failed (target: sm_80)
make[2]: *** [coreComponents/CMakeFiles/geosx_core.dir/cmake_device_link.o] Error 1
make[2]: Target `coreComponents/CMakeFiles/geosx_core.dir/build' not remade because of errors.
make[1]: *** [coreComponents/CMakeFiles/geosx_core.dir/all] Error 2

The compiler/linker thinks that the definitions for _ZN4geos13finiteElement18ImplicitKernelBaseINS_20CellElementSubRegionENS_12constitutive11PorousSolidINS3_16ElasticIsotropicEEENS0_25H1_Wedge_Lagrange1_Gauss6ELi3ELi3EE14StackVariablesC1Ev$571 are not matching in two locations :

  1. ../lib/libphysicsSolvers.a:PoromechanicsEFEMKernels_CellElementSubRegion_PorousSolid-ElasticIsotropic-_H1_Wedge_Lagrange1_Gauss6.cpp.o , and
  2. ../lib/libphysicsSolvers.a:SolidMechanicsFixedStressThermoPoroElasticKernels_CellElementSubRegion_PorousSolid-ElasticIsotropic-_H1_Wedge_Lagrange1_Gauss6.cpp.o

Can you help me demangle the symbol name so I can locate the two different definitions?

thank you

Using CUDA 12.2 or GCC 10.2.0 generates the same behavior
thanks

There are online demanglers available. Here is one.

When I put this:

in, I get:

geos::finiteElement::ImplicitKernelBase<geos::CellElementSubRegion, geos::constitutive::PorousSolid<geos::constitutive::ElasticIsotropic>, geos::finiteElement::H1_Wedge_Lagrange1_Gauss6, 3, 3>::StackVariables::StackVariables()$571

Robert, great thanks…

Do you know why the comma separated list of elements?

Thanks!
Michael

I’m not sure what you are referring to, and I have no knowledge of GEOS.

If you mean this:

<geos::CellElementSubRegion, geos::constitutive::PorousSolid<geos::constitutive::ElasticIsotropic>, geos::finiteElement::H1_Wedge_Lagrange1_Gauss6, 3, 3>

Those comma-separated items are C++ template arguments.

I see, thanks!