Stokhos/Tpetra: Missing symbols in static library build
Created by: prwolfe
Bug Report
@trilinos/stokhos @trilinos/tpetra
Description
I am building using static libraries (see PR #5111 and issue #5058). At link time I get
[ 94%] Linking CXX executable Stokhos_TpetraCrsMatrixMPVectorUnitTest_Serial.exe ../../src/libstokhos_tpetra_mp_16_serial.a(Tpetra_MultiVector_MP_Vector_16_Serial.cpp.o): In function
void (anonymous namespace)::multiVectorNormImpl<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::Serial> >, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >(Tpetra::MultiVector<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::Serial> >, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::mag_type*, Tpetra::MultiVector<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::Serial> >, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >&, Tpetra::Details::EWhichNorm)': /scratch/prwolfe/trilinos/Trilinos/packages/tpetra/core/src/Tpetra_MultiVector_def.hpp:387: undefined reference to
void Tpetra::Details::normImpl<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::Serial> >, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace>, Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::Serial> > >(Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::Serial> >*, Kokkos::View<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::Serial> ><Kokkos::LayoutLeft, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> > const> const&, Tpetra::Details::EWhichNorm, Teuchos::ArrayView const&, bool, bool, Tpetra::Details::EWhichNorm::Comm const*)' /scratch/prwolfe/trilinos/Trilinos/packages/tpetra/core/src/Tpetra_MultiVector_def.hpp:374: undefined reference tovoid Tpetra::Details::normImpl<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::Serial> >, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace>, Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::Serial> > >(Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::Serial> >*, Kokkos::View<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::Serial> ><Kokkos::LayoutLeft, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> > const**> const&, Tpetra::Details::EWhichNorm, Teuchos::ArrayView<unsigned long const> const&, bool, bool, Tpetra::Details::EWhichNorm::Comm<int> const*)' ../../../muelu/src/libmuelu_lgn.a(MueLu_IsorropiaInterface.cpp.o): In function
MueLu::IsorropiaInterface<int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::Build(MueLu::Level&) const': /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:145: undefined reference toMueLu::AmalgamationFactory<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::DOFGid2NodeId(int, int, int, int)' /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:158: undefined reference to
MueLu::AmalgamationFactory<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::DOFGid2NodeId(int, int, int, int)' ../../../muelu/src/libmuelu_lgn.a(MueLu_IsorropiaInterface.cpp.o): In functionMueLu::IsorropiaInterface<int, long long, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::Build(MueLu::Level&) const': /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:145: undefined reference to
MueLu::AmalgamationFactory<double, int, long long, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::DOFGid2NodeId(long long, int, long long, long long)' /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:158: undefined reference toMueLu::AmalgamationFactory<double, int, long long, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::DOFGid2NodeId(long long, int, long long, long long)' ../../../muelu/src/libmuelu_lgn.a(MueLu_IsorropiaInterface.cpp.o): In function
MueLu::IsorropiaInterface<int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::Build(MueLu::Level&) const': /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:145: undefined reference toMueLu::AmalgamationFactory<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::DOFGid2NodeId(int, int, int, int)' /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:158: undefined reference to
MueLu::AmalgamationFactory<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::DOFGid2NodeId(int, int, int, int)' ../../../muelu/src/libmuelu_lgn.a(MueLu_IsorropiaInterface.cpp.o): In functionMueLu::IsorropiaInterface<int, long long, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::Build(MueLu::Level&) const': /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:145: undefined reference to
MueLu::AmalgamationFactory<double, int, long long, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::DOFGid2NodeId(long long, int, long long, long long)' /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:158: undefined reference toMueLu::AmalgamationFactory<double, int, long long, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::DOFGid2NodeId(long long, int, long long, long long)' collect2: error: ld returned 1 exit status make[2]: *** [packages/stokhos/test/UnitTest/Stokhos_TpetraCrsMatrixMPVectorUnitTest_Serial.exe] Error 1 make[2]: Target
packages/stokhos/test/UnitTest/CMakeFiles/Stokhos_TpetraCrsMatrixMPVectorUnitTest_Serial.dir/build' not remade because of errors. make[1]: *** [packages/stokhos/test/UnitTest/CMakeFiles/Stokhos_TpetraCrsMatrixMPVectorUnitTest_Serial.dir/all] Error 2 [ 95%] Linking CXX executable Stokhos_TpetraCrsMatrixUQPCEUnitTest_Serial.exe ../../src/libstokhos_tpetra_pce_serial.a(Tpetra_MultiVector_UQ_PCE_Serial.cpp.o): In functionvoid (anonymous namespace)::multiVectorNormImpl<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::Serial> >, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >(Tpetra::MultiVector<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::Serial> >, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::mag_type*, Tpetra::MultiVector<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::Serial> >, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >&, Tpetra::Details::EWhichNorm)': /scratch/prwolfe/trilinos/Trilinos/packages/tpetra/core/src/Tpetra_MultiVector_def.hpp:387: undefined reference to
void Tpetra::Details::normImpl<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::Serial> >, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace>, double>(double*, Kokkos::View<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::Serial> ><Kokkos::LayoutLeft, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> > const> const&, Tpetra::Details::EWhichNorm, Teuchos::ArrayView const&, bool, bool, Tpetra::Details::EWhichNorm::Comm const*)' /scratch/prwolfe/trilinos/Trilinos/packages/tpetra/core/src/Tpetra_MultiVector_def.hpp:374: undefined reference tovoid Tpetra::Details::normImpl<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::Serial> >, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace>, double>(double*, Kokkos::View<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::Serial> ><Kokkos::LayoutLeft, Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace> > const**> const&, Tpetra::Details::EWhichNorm, Teuchos::ArrayView<unsigned long const> const&, bool, bool, Tpetra::Details::EWhichNorm::Comm<int> const*)' collect2: error: ld returned 1 exit status make[2]: *** [packages/stokhos/test/UnitTest/Stokhos_TpetraCrsMatrixUQPCEUnitTest_Serial.exe] Error 1 make[2]: Target
packages/stokhos/test/UnitTest/CMakeFiles/Stokhos_TpetraCrsMatrixUQPCEUnitTest_Serial.dir/build' not remade because of errors. make[1]: *** [packages/stokhos/test/UnitTest/CMakeFiles/Stokhos_TpetraCrsMatrixUQPCEUnitTest_Serial.dir/all] Error 2 95%] Linking CXX executable Stokhos_TpetraCrsMatrixMPVectorUnitTest_OpenMP.exe ../../src/libstokhos_tpetra_mp_16_openmp.a(Tpetra_MultiVector_MP_Vector_16_OpenMP.cpp.o): In functionvoid (anonymous namespace)::multiVectorNormImpl<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::OpenMP> >, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >(Tpetra::MultiVector<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::OpenMP> >, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::mag_type*, Tpetra::MultiVector<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::OpenMP> >, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >&, Tpetra::Details::EWhichNorm)': /scratch/prwolfe/trilinos/Trilinos/packages/tpetra/core/src/Tpetra_MultiVector_def.hpp:387: undefined reference to
void Tpetra::Details::normImpl<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::OpenMP> >, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace>, Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::OpenMP> > >(Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::OpenMP> >*, Kokkos::View<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::OpenMP> ><Kokkos::LayoutLeft, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace> > const> const&, Tpetra::Details::EWhichNorm, Teuchos::ArrayView const&, bool, bool, Tpetra::Details::EWhichNorm::Comm const*)' /scratch/prwolfe/trilinos/Trilinos/packages/tpetra/core/src/Tpetra_MultiVector_def.hpp:374: undefined reference tovoid Tpetra::Details::normImpl<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::OpenMP> >, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace>, Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::OpenMP> > >(Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::OpenMP> >*, Kokkos::View<Sacado::MP::Vector<Stokhos::StaticFixedStorage<int, double, 16, Kokkos::OpenMP> ><Kokkos::LayoutLeft, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace> > const**> const&, Tpetra::Details::EWhichNorm, Teuchos::ArrayView<unsigned long const> const&, bool, bool, Tpetra::Details::EWhichNorm::Comm<int> const*)' ../../../muelu/src/libmuelu_lgn.a(MueLu_IsorropiaInterface.cpp.o): In function
MueLu::IsorropiaInterface<int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::Build(MueLu::Level&) const': /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:145: undefined reference toMueLu::AmalgamationFactory<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::DOFGid2NodeId(int, int, int, int)' /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:158: undefined reference to
MueLu::AmalgamationFactory<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::DOFGid2NodeId(int, int, int, int)' ../../../muelu/src/libmuelu_lgn.a(MueLu_IsorropiaInterface.cpp.o): In functionMueLu::IsorropiaInterface<int, long long, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::Build(MueLu::Level&) const': /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:145: undefined reference to
MueLu::AmalgamationFactory<double, int, long long, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::DOFGid2NodeId(long long, int, long long, long long)' /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:158: undefined reference toMueLu::AmalgamationFactory<double, int, long long, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace> >::DOFGid2NodeId(long long, int, long long, long long)' ../../../muelu/src/libmuelu_lgn.a(MueLu_IsorropiaInterface.cpp.o): In function
MueLu::IsorropiaInterface<int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::Build(MueLu::Level&) const': /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:145: undefined reference toMueLu::AmalgamationFactory<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::DOFGid2NodeId(int, int, int, int)' /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:158: undefined reference to
MueLu::AmalgamationFactory<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::DOFGid2NodeId(int, int, int, int)' ../../../muelu/src/libmuelu_lgn.a(MueLu_IsorropiaInterface.cpp.o): In functionMueLu::IsorropiaInterface<int, long long, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::Build(MueLu::Level&) const': /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:145: undefined reference to
MueLu::AmalgamationFactory<double, int, long long, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::DOFGid2NodeId(long long, int, long long, long long)' /scratch/prwolfe/trilinos/Trilinos/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp:158: undefined reference toMueLu::AmalgamationFactory<double, int, long long, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::DOFGid2NodeId(long long, int, long long, long long)' collect2: error: ld returned 1 exit status make[2]: *** [packages/stokhos/test/UnitTest/Stokhos_TpetraCrsMatrixMPVectorUnitTest_OpenMP.exe] Error 1 make[2]: Target
packages/stokhos/test/UnitTest/CMakeFiles/Stokhos_TpetraCrsMatrixMPVectorUnitTest_OpenMP.dir/build' not remade because of errors. make[1]: *** [packages/stokhos/test/UnitTest/CMakeFiles/Stokhos_TpetraCrsMatrixMPVectorUnitTest_OpenMP.dir/all] Error 2 [ 95%] Linking CXX executable Stokhos_TpetraCrsMatrixUQPCEUnitTest_OpenMP.exe ../../src/libstokhos_tpetra_pce_openmp.a(Tpetra_MultiVector_UQ_PCE_OpenMP.cpp.o): In functionvoid (anonymous namespace)::multiVectorNormImpl<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::OpenMP> >, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >(Tpetra::MultiVector<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::OpenMP> >, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::mag_type*, Tpetra::MultiVector<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::OpenMP> >, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >&, Tpetra::Details::EWhichNorm)': /scratch/prwolfe/trilinos/Trilinos/packages/tpetra/core/src/Tpetra_MultiVector_def.hpp:387: undefined reference to
void Tpetra::Details::normImpl<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::OpenMP> >, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace>, double>(double*, Kokkos::View<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::OpenMP> ><Kokkos::LayoutLeft, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace> > const> const&, Tpetra::Details::EWhichNorm, Teuchos::ArrayView const&, bool, bool, Tpetra::Details::EWhichNorm::Comm const*)' /scratch/prwolfe/trilinos/Trilinos/packages/tpetra/core/src/Tpetra_MultiVector_def.hpp:374: undefined reference tovoid Tpetra::Details::normImpl<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::OpenMP> >, Kokkos::LayoutLeft, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace>, double>(double*, Kokkos::View<Sacado::UQ::PCE<Stokhos::DynamicStorage<int, double, Kokkos::OpenMP> ><Kokkos::LayoutLeft, Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace> > const**> const&, Tpetra::Details::EWhichNorm, Teuchos::ArrayView<unsigned long const> const&, bool, bool, Tpetra::Details::EWhichNorm::Comm<int> const*)' collect2: error: ld returned 1 exit status make[2]: *** [packages/stokhos/test/UnitTest/Stokhos_TpetraCrsMatrixUQPCEUnitTest_OpenMP.exe] Error 1 make[2]: Target
packages/stokhos/test/UnitTest/CMakeFiles/Stokhos_TpetraCrsMatrixUQPCEUnitTest_OpenMP.dir/build' not remade because of errors. make[1]: *** [packages/stokhos/test/UnitTest/CMakeFiles/Stokhos_TpetraCrsMatrixUQPCEUnitTest_OpenMP.dir/all] Error 2
I know we have had previous issues like this relating to typedefs, not sure if that is happening here or not.
Steps to Reproduce
- SHA1: Head of develop plus the code from #5111
- Configure script: Use gcc 4.8.4 and the instructions at https://github.com/trilinos/Trilinos/wiki/Reproducing-PR-Testing-Errors
- Configure log: -DTrilinos_ENABLE_Stokkos