MueLu: Link errors in CUDA builds
Created by: mhoemmen
@trilinos/muelu This blocks CUDA testing and therefore hinders #1606, #1367 (closed), etc.
Examples of link errors:
[ 78%] Linking CXX executable MueLu_Challenge_XML.exe
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::subCopy(Teuchos::ArrayView<unsigned long const> const&) const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::assign(Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false> const&)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::~MultiVector()'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::update(double const&, Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false> const&, double const&)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::getNumVectors() const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::Map<int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::getNode() const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::randomize()'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::subView(Teuchos::ArrayView<unsigned long const> const&) const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::getGlobalLength() const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::norm1(Teuchos::ArrayView<double> const&) const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::MultiVector(Teuchos::RCP<Tpetra::Map<int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> > const> const&, Teuchos::ArrayView<double const> const&, unsigned long, unsigned long)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::multiply(Teuchos::ETransp, Teuchos::ETransp, double const&, Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false> const&, Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false> const&, double const&)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::subViewNonConst(Teuchos::ArrayView<unsigned long const> const&)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::putScalar(double const&)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::getVector(unsigned long) const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::Map<int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::getComm() const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::MultiVector(Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false> const&, Teuchos::DataAccess)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::scale(Teuchos::ArrayView<double const> const&)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::scale(double const&)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::Map<int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::~Map()'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::getVectorNonConst(unsigned long)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::subViewNonConst(Teuchos::Range1D const&)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::MultiVector(Teuchos::RCP<Tpetra::Map<int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> > const> const&, unsigned long, bool)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::normInf(Teuchos::ArrayView<double> const&) const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::subView(Teuchos::Range1D const&) const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::Map<int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> >::Map(unsigned long, int, Teuchos::RCP<Teuchos::Comm<int> const> const&, Tpetra::LocalGlobal, Teuchos::RCP<Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace> > const&)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::dot(Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false> const&, Teuchos::ArrayView<double> const&) const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::update(double const&, Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false> const&, double const&, Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false> const&, double const&)'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::Vector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::norm2() const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::norm2(Teuchos::ArrayView<double> const&) const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::MultiVector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::get1dCopy(Teuchos::ArrayView<double> const&, unsigned long) const'
../../../src/libmuelu.so.12.13: undefined reference to `Tpetra::Vector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false>::dot(Tpetra::Vector<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP, Kokkos::HostSpace>, false> const&) const'
collect2: error: ld returned 1 exit status
make[2]: *** [packages/muelu/doc/Tutorial/src/MueLu_Challenge_XML.exe] Error 1
make[1]: *** [packages/muelu/doc/Tutorial/src/CMakeFiles/MueLu_Challenge_XML.dir/all] Error 2
make: *** [all] Error 2
SEMS modules loaded:
Currently Loaded Modulefiles:
1) sems-env 2) kokkos-env 3) sems-cmake/3.3.2 4) sems-gcc/5.3.0 5) kokkos-cuda/8.0.44 6) kokkos-openmpi/2.0.1/cuda
CMake configuration:
-D Trilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON
-D BUILD_SHARED_LIBS:BOOL=ON
-D Trilinos_ENABLE_OpenMP:BOOL=ON
-D Trilinos_SHOW_DEPRECATED_WARNINGS:BOOL=ON
-D Trilinos_ENABLE_Fortran:BOOL=OFF
-D TPL_ENABLE_CUDA:BOOL=ON
-D Kokkos_ENABLE_Cuda_UVM:BOOL=ON
-D Tpetra_INST_CUDA:BOOL=ON
-D Kokkos_ENABLE_Cuda_Lambda:BOOL=ON
-D CMAKE_CXX_FLAGS:STRING="-Wall -std=c++11 -expt-extended-lambda"
-D Teuchos_ENABLE_COMPLEX:BOOL=ON
-D Trilinos_ENABLE_COMPLEX_DOUBLE:BOOL=ON
-D TPL_ENABLE_MKL:BOOL=OFF
-D TPL_ENABLE_Matio:BOOL=OFF
-D TPL_ENABLE_SuperLU:BOOL=OFF
-D TPL_ENABLE_Zlib:BOOL=OFF
-D TPL_ENABLE_Netcdf:BOOL=OFF
-D TPL_ENABLE_HDF5:BOOL=OFF
-D TPL_ENABLE_ParMETIS:BOOL=OFF
-D TPL_ENABLE_Boost:BOOL=OFF
-D TPL_ENABLE_BoostLib:BOOL=OFF
-D TPL_ENABLE_yaml-cpp:BOOL=OFF
-D TPL_ENABLE_MPI:BOOL=ON
-D CMAKE_BUILD_TYPE:STRING=DEBUG
-D Kokkos_ENABLE_DEBUG:BOOL=ON
-D Teuchos_ENABLE_DEBUG:BOOL=ON
-D CMAKE_CXX_FLAGS_DEBUG:STRING="-Os"