Skip to content

Tpetra: Compilation error with Serial backend not enabled - "undefined reference to `Tpetra::Details::FixedHashTable<...>::hasDuplicateKeys()" #14489

@ndellingwood

Description

@ndellingwood

Bug Report

@trilinos/tpetra

Description

In OpenMP builds with Tpetra enabled the following undefined reference errors are occurring with FixedHashTable:

FAILED: packages/tpetra/core/test/HashTable/TpetraCore_FixedHashTableTest.exe
: && /projects/x86-64-icelake-rocky8/external-packages/openmpi/4.1.5/gcc/11.3.0/bin/mpicxx -pedantic -Wall -Wno-long-long -Wwrite-strings   -Wno-inline -Wno-deprecated-declarations -g   -O3 -DNDEBUG -DKOKKOS_DEPENDENCE -march=skylake-avx512 -mtune=skylake-avx512 packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/FixedHashTableTest.cpp.o packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/__/__/__/__/teuchos/core/test/UnitTest/Teuchos_StandardUnitTestMain.cpp.o -o packages/tpetra/core/test/HashTable/TpetraCore_FixedHashTableTest.exe  packages/tpetra/core/ext/libtpetraext.a  packages/tpetra/core/inout/libtpetrainout.a  packages/tpetra/core/src/libtpetra.a  packages/tpetra/core/compat/libtpetraclassic.a  packages/tpetra/tsqr/src/libkokkostsqr.a  packages/teuchos/remainder/src/libteuchosremainder.a  packages/teuchos/kokkoscomm/src/libteuchoskokkoscomm.a  packages/teuchos/kokkoscompat/src/libteuchoskokkoscompat.a  packages/kokkos-kernels/libkokkoskernels.a  packages/teuchos/numerics/src/libteuchosnumerics.a  packages/teuchos/comm/src/libteuchoscomm.a  packages/teuchos/parameterlist/src/libteuchosparameterlist.a  packages/teuchos/parser/src/libteuchosparser.a  packages/teuchos/core/src/libteuchoscore.a  packages/kokkos/containers/src/libkokkoscontainers.a  packages/kokkos/algorithms/src/libkokkosalgorithms.a  packages/kokkos/core/src/libkokkoscore.a  -ldl  /projects/x86-64-icelake-rocky8/compilers/gcc/11.3.0/gcc/8.5.0/base/3kidadg/lib64/libgomp.so  packages/kokkos/simd/src/libkokkossimd.a  /projects/x86-64-icelake-rocky8/tpls/openblas/0.3.23/gcc/11.3.0/base/ucufbom/lib/libopenblas.so  /projects/x86-64-icelake-rocky8/tpls/openblas/0.3.23/gcc/11.3.0/base/ucufbom/lib/libopenblas.so && :
packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/FixedHashTableTest.cpp.o: In function `(anonymous namespace)::TestCopyCtor<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace>, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace> >::test(std::ostream&, bool&, Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace> >&, Kokkos::View<long long const*, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace> > const&, Kokkos::View<int const*, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)':
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:770: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::hasDuplicateKeys()'
packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/FixedHashTableTest.cpp.o: In function `(anonymous namespace)::TestCopyCtor<long long, int, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace>, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::test(std::ostream&, bool&, Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >&, Kokkos::View<long long const*, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> > const&, Kokkos::View<int const*, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)':
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:769: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::hasDuplicateKeys()'
packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/FixedHashTableTest.cpp.o: In function `(anonymous namespace)::FixedHashTable_T_ContigKeysStartingValue_UnitTest<int, long long, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::runUnitTestImpl(Teuchos::basic_FancyOStream<char, std::char_traits<char> >&, bool&) const':
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:302: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::FixedHashTable(Teuchos::ArrayView<long long const> const&, int)'
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:314: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::hasDuplicateKeys()'
packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/FixedHashTableTest.cpp.o: In function `(anonymous namespace)::FixedHashTable_K_ContigKeysStartingValue_UnitTest<int, long long, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::runUnitTestImpl(Teuchos::basic_FancyOStream<char, std::char_traits<char> >&, bool&) const':
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:374: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::FixedHashTable(Kokkos::View<long long const*, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> > const&, int)'
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:386: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::hasDuplicateKeys()'
packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/FixedHashTableTest.cpp.o: In function `(anonymous namespace)::FixedHashTable_T_NoncontigKeysStartingValue_UnitTest<int, long long, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::runUnitTestImpl(Teuchos::basic_FancyOStream<char, std::char_traits<char> >&, bool&) const':
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:446: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::FixedHashTable(Teuchos::ArrayView<long long const> const&, int)'
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:458: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::hasDuplicateKeys()'
packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/FixedHashTableTest.cpp.o: In function `(anonymous namespace)::FixedHashTable_K_NoncontigKeysStartingValue_UnitTest<int, long long, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::runUnitTestImpl(Teuchos::basic_FancyOStream<char, std::char_traits<char> >&, bool&) const':
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:519: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::FixedHashTable(Kokkos::View<long long const*, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> > const&, int)'
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:531: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::hasDuplicateKeys()'
packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/FixedHashTableTest.cpp.o: In function `(anonymous namespace)::FixedHashTable_T_NoncontigKeysAndVals_UnitTest<int, long long, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::runUnitTestImpl(Teuchos::basic_FancyOStream<char, std::char_traits<char> >&, bool&) const':
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:591: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::FixedHashTable(Teuchos::ArrayView<long long const> const&, Teuchos::ArrayView<int const> const&)'
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:603: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::hasDuplicateKeys()'
packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/FixedHashTableTest.cpp.o: In function `(anonymous namespace)::FixedHashTable_T_DuplicateKeys_UnitTest<int, long long, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::runUnitTestImpl(Teuchos::basic_FancyOStream<char, std::char_traits<char> >&, bool&) const':
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:667: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::FixedHashTable(Teuchos::ArrayView<long long const> const&, int)'
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:682: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::hasDuplicateKeys()'
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:699: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::hasDuplicateKeys()'
packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/FixedHashTableTest.cpp.o: In function `(anonymous namespace)::FixedHashTable_T_CopyCtorNoDupKeys_UnitTest<int, long long, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::runUnitTestImpl(Teuchos::basic_FancyOStream<char, std::char_traits<char> >&, bool&) const':
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:841: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::FixedHashTable(Teuchos::ArrayView<long long const> const&, int)'
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:846: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::hasDuplicateKeys()'
packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/FixedHashTableTest.cpp.o: In function `(anonymous namespace)::FixedHashTable_T_CopyCtorDupKeys_UnitTest<int, long long, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::runUnitTestImpl(Teuchos::basic_FancyOStream<char, std::char_traits<char> >&, bool&) const':
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:985: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::FixedHashTable(Teuchos::ArrayView<long long const> const&, int)'
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:990: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::hasDuplicateKeys()'
packages/tpetra/core/test/HashTable/CMakeFiles/TpetraCore_FixedHashTableTest.dir/FixedHashTableTest.cpp.o: In function `(anonymous namespace)::FixedHashTable_Empty_UnitTest<int, long long, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::runUnitTestImpl(Teuchos::basic_FancyOStream<char, std::char_traits<char> >&, bool&) const':
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:213: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::FixedHashTable(Teuchos::ArrayView<long long const> const&, int)'
/home/ndellin/trilinos/Trilinos-pristine/packages/tpetra/core/test/HashTable/FixedHashTableTest.cpp:219: undefined reference to `Tpetra::Details::FixedHashTable<long long, int, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> >::hasDuplicateKeys()'
collect2: error: ld returned 1 exit status

Seems to have begun after #14427

Steps to Reproduce

  1. SHA1: e721625
  2. Configure script: Blake testbed, "all" queue
ssh blake
salloc -N 1 -p all

module purge
module load cmake gcc/11.3.0 openmpi/4.1.5 openblas/0.3.23 ninja

export TRILINOS_DIR=<path-to-source>

cmake \
  -B build \
  -G Ninja \
  -D CMAKE_INSTALL_PREFIX="${PWD}/install" \
  -D CMAKE_CXX_COMPILER="`which mpicxx`" \
  -D CMAKE_C_COMPILER="`which mpicc`" \
  -D CMAKE_Fortran_COMPILER="`which mpifort`" \
  -D CMAKE_CXX_FLAGS="-g" \
  -D CMAKE_C_FLAGS="-g" \
  -D CMAKE_CXX_STANDARD=20 \
  -DTPL_ENABLE_MPI=ON \
  -DTPL_ENABLE_BLAS:BOOL=ON \
   -DBLAS_LIBRARY_DIRS:FILEPATH=${OPENBLAS_ROOT}/lib \
   -DBLAS_LIBRARY_NAMES:STRING="openblas" \
  -DTPL_ENABLE_LAPACK:BOOL=ON \
   -DLAPACK_INCLUDE_DIRS:FILEPATH=${OPENBLAS_ROOT}/include \
   -DLAPACK_LIBRARY_DIRS:FILEPATH=${OPENBLAS_ROOT}/lib \
   -DLAPACK_LIBRARY_NAMES:STRING="openblas" \
  -DTrilinos_ENABLE_ALL_PACKAGES=OFF \
  -DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF \
  -DTrilinos_ENABLE_TESTS=ON \
  -DTrilinos_MUST_FIND_ALL_TPL_LIBS=TRUE \
  -DTrilinos_ENABLE_COMPLEX=ON \
  -DTrilinos_ENABLE_OpenMP=ON \
  -DTrilinos_ENABLE_Kokkos=ON \
  -D Kokkos_ENABLE_OPENMP=ON \
   -D Kokkos_ENABLE_TESTS=ON \
  -D Kokkos_ARCH_SKX=ON \
   -D Kokkos_ENABLE_IMPL_VIEW_LEGACY=ON \
  -DTrilinos_ENABLE_KokkosKernels=ON \
   -D KokkosKernels_ENABLE_TESTS=ON \
  -DTrilinos_ENABLE_Tpetra=ON \
   -D Tpetra_ENABLE_TESTS=ON \
  -DTrilinos_ENABLE_Sacado=ON \
   -D Sacado_ENABLE_TESTS=ON \
  -DTrilinos_ENABLE_Stokhos=ON \
   -D Stokhos_ENABLE_TESTS=ON \
  -DTrilinos_ENABLE_Intrepid2=ON \
   -D Intrepid2_ENABLE_TESTS=ON \
  -DTrilinos_ENABLE_Amesos2=ON \
   -D Amesos2_ENABLE_TESTS=ON \
  -DTrilinos_ENABLE_Ifpack2=ON \
   -D Ifpack2_ENABLE_TESTS=ON \
  -DTrilinos_ENABLE_Zoltan2=ON \
   -D Zoltan2_ENABLE_TESTS=ON \
\
  -DTPL_ENABLE_Matio=OFF \
$TRILINOS_DIR

cmake --build build --parallel 32

Metadata

Metadata

Assignees

No one assigned

    Labels

    pkg: Tpetratype: bugThe primary issue is a bug in Trilinos code or tests

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions