MueLu with Experimental features fails to build if Teko is enabled
Created by: jjellio
Hi!
Building with OpenMP only (Kokkos/Tpetra only have OpenMP enabled) and MueLu with Experimental flags + Kokkos refactor is creating this error on Cori @ NERSC. The quick fix was to explicitly disable Teko, as it was only enabled through the optional dependencies.
The configure variables that trigger this:
-D MueLu_ENABLE_Experimental:BOOL=ON
-D MueLu_ENABLE_Kokkos_Refactor:BOOL=ON
-D Xpetra_ENABLE_Experimental:BOOL=ON
-D Xpetra_ENABLE_Kokkos_Refactor:BOOL=ON
/global/homes/j/jjellio/src/Trilinos/packages/muelu/src/Smoothers/BlockedSmoothers/MueLu_TekoSmoother_decl.hpp(328): error: object of abstract class type "MueLu::TekoSmoother<double, int, int, KokkosClassic::DefaultNode::DefaultNodeType>" is not allowed:
pure virtual function "MueLu::SmootherBase<Scalar, LocalOrdinal, GlobalOrdinal, Node>::getNodeSmootherComplexity [with Scalar=double, LocalOrdinal=int, GlobalOrdinal=int, Node=KokkosClassic::DefaultNode::DefaultNodeType]" has no overrider
RCP<SmootherPrototype> Copy() const { return rcp (new TekoSmoother (*this)); }
^
detected during instantiation of "Teuchos::RCP<MueLu::TekoSmoother<double, int, GlobalOrdinal, Node>::SmootherPrototype> MueLu::TekoSmoother<double, int, GlobalOrdinal, Node>::Copy() const [with GlobalOrdinal=int, Node=KokkosClassic::DefaultNode::DefaultNodeType]" at line 32 of "/global/homes/j/jjellio/src/Trilinos/packages/muelu/src/Utils/MueLu_ETI_4arg.hpp"
/global/homes/j/jjellio/src/Trilinos/packages/muelu/src/Smoothers/BlockedSmoothers/MueLu_TekoSmoother_decl.hpp(328): error: no instance of overloaded function "MueLu::rcp" matches the argument list
argument types are: (<error-type>)
RCP<SmootherPrototype> Copy() const { return rcp (new TekoSmoother (*this)); }
^
/global/homes/j/jjellio/src/Trilinos/packages/muelu/src/Headers/MueLu_ConfigDefs.hpp(90): note: this candidate was rejected because at least one template argument could not be deduced
using Teuchos::rcp;
^
/global/homes/j/jjellio/src/Trilinos/packages/muelu/src/Headers/MueLu_ConfigDefs.hpp(90): note: this candidate was rejected because mismatch in count of arguments
using Teuchos::rcp;
^
detected during instantiation of "Teuchos::RCP<MueLu::TekoSmoother<double, int, GlobalOrdinal, Node>::SmootherPrototype> MueLu::TekoSmoother<double, int, GlobalOrdinal, Node>::Copy() const [with GlobalOrdinal=int, Node=KokkosClassic::DefaultNode::DefaultNodeType]" at line 32 of "/global/homes/j/jjellio/src/Trilinos/packages/muelu/src/Utils/MueLu_ETI_4arg.hpp"
/global/homes/j/jjellio/src/Trilinos/packages/muelu/src/Smoothers/BlockedSmoothers/MueLu_TekoSmoother_decl.hpp(328): error: object of abstract class type "MueLu::TekoSmoother<double, int, longlong={long long}, Kokkos_Compat_KokkosOpenMPWrapperNode>" is not allowed:
pure virtual function "MueLu::SmootherBase<Scalar, LocalOrdinal, GlobalOrdinal, Node>::getNodeSmootherComplexity [with Scalar=double, LocalOrdinal=int, GlobalOrdinal=longlong={long long}, Node=Kokkos_Compat_KokkosOpenMPWrapperNode]" has no overrider
RCP<SmootherPrototype> Copy() const { return rcp (new TekoSmoother (*this)); }
^
detected during instantiation of "Teuchos::RCP<MueLu::TekoSmoother<double, int, GlobalOrdinal, Node>::SmootherPrototype> MueLu::TekoSmoother<double, int, GlobalOrdinal, Node>::Copy() const [with GlobalOrdinal=longlong={long long}, Node=Kokkos_Compat_KokkosOpenMPWrapperNode]" at line 32 of "/global/homes/j/jjellio/src/Trilinos/packages/muelu/src/Utils/MueLu_ETI_4arg.hpp"
/global/homes/j/jjellio/src/Trilinos/packages/muelu/src/Smoothers/BlockedSmoothers/MueLu_TekoSmoother_decl.hpp(328): error: no instance of overloaded function "MueLu::rcp" matches the argument list
argument types are: (<error-type>)
RCP<SmootherPrototype> Copy() const { return rcp (new TekoSmoother (*this)); }
^
/global/homes/j/jjellio/src/Trilinos/packages/muelu/src/Headers/MueLu_ConfigDefs.hpp(90): note: this candidate was rejected because at least one template argument could not be deduced
using Teuchos::rcp;
^
/global/homes/j/jjellio/src/Trilinos/packages/muelu/src/Headers/MueLu_ConfigDefs.hpp(90): note: this candidate was rejected because mismatch in count of arguments
using Teuchos::rcp;
^
detected during instantiation of "Teuchos::RCP<MueLu::TekoSmoother<double, int, GlobalOrdinal, Node>::SmootherPrototype> MueLu::TekoSmoother<double, int, GlobalOrdinal, Node>::Copy() const [with GlobalOrdinal=longlong={long long}, Node=Kokkos_Compat_KokkosOpenMPWrapperNode]" at line 32 of "/global/homes/j/jjellio/src/Trilinos/packages/muelu/src/Utils/MueLu_ETI_4arg.hpp"
compilation aborted for /global/homes/j/jjellio/build/trilinos-knl-openmp/packages/muelu/src/Utils/ExplicitInstantiation/MueLu_TekoSmoother.cpp (code 2)
packages/muelu/src/CMakeFiles/muelu.dir/build.make:1934: recipe for target 'packages/muelu/src/CMakeFiles/muelu.dir/Utils/ExplicitInstantiation/MueLu_TekoSmoother.cpp.o' failed
make[2]: *** [packages/muelu/src/CMakeFiles/muelu.dir/Utils/ExplicitInstantiation/MueLu_TekoSmoother.cpp.o] Error 2
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:10449: recipe for target 'packages/muelu/src/CMakeFiles/muelu.dir/all' failed
make[1]: *** [packages/muelu/src/CMakeFiles/muelu.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
read -r -d '' MUELU_DETAILS <<- EOM
-D Tpetra_ENABLE_MMM_Timings:BOOL=ON
-D Trilinos_ENABLE_MueLu=ON
-D MueLu_ENABLE_TESTS=ON
-D MueLu_ENABLE_EXAMPLES=OFF
-D KokkosKernels_ENABLE_Experimental:BOOL=ON
-D TpetraKernels_ENABLE_Experimental:BOOL=ON
-D MueLu_ENABLE_Experimental:BOOL=ON
-D MueLu_ENABLE_Kokkos_Refactor:BOOL=ON
-D Xpetra_ENABLE_Experimental:BOOL=ON
-D Xpetra_ENABLE_Kokkos_Refactor:BOOL=ON
-D Trilinos_ENABLE_Xpetra=ON
-D Trilinos_ENABLE_Isorropia=ON
-D Trilinos_ENABLE_Galeri=ON
-D Trilinos_ENABLE_Teuchos=ON
-D Trilinos_ENABLE_Epetra=ON
-D Trilinos_ENABLE_EpetraExt=ON
-D Trilinos_ENABLE_Anasazi=ON
-D Anasazi_ENABLE_RBGen=ON
-D Trilinos_ENABLE_Stokhos=OFF
-D Trilinos_ENABLE_Panzer=OFF
-D Trilinos_ENABLE_Amesos2=ON
-D Amesos2_ENABLE_KLU2=ON
-D Trilinos_ENABLE_Ifpack2=ON
-D Trilinos_ENABLE_Zoltan2=ON
EOM
cmake \
\
-D Trilinos_LINK_SEARCH_START_STATIC:BOOL=ON \
-D MPI_USE_COMPILER_WRAPPERS=OFF \
-D CMAKE_CXX_COMPILER="CC" \
-D CMAKE_C_COMPILER="cc" \
-D CMAKE_CXX_FLAGS="${JENKINS_ARCH_CXX_FLAG} -g1" \
-D CMAKE_C_FLAGS="${JENKINS_ARCH_C_FLAG} -g1" \
-D CMAKE_Fortran_FLAGS="${JENKINS_ARCH_C_FLAG} -g1" \
-D CMAKE_EXE_LINKER_FLAGS="${JENKINS_ARCH_C_FLAG} ${EXTRA_LINKER_OPTS}" \
-D CMAKE_Fortran_COMPILER="ftn" \
\
-D HAVE_GCC_ABI_DEMANGLE:BOOL=TRUE \
\
-D Trilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON \
-D Trilinos_ENABLE_DEBUG:BOOL=OFF \
\
-D CMAKE_INSTALL_PREFIX:PATH="${TRILINOS_INSTALL}" \
-D Trilinos_ENABLE_INSTALL_CMAKE_CONFIG_FILES:BOOL=ON \
-D CMAKE_BUILD_TYPE:STRING=RELEASE \
-D CMAKE_VERBOSE_MAKEFILE:BOOL=OFF \
-D Trilinos_ENABLE_ALL_PACKAGES:BOOL=OFF \
-D Trilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=ON \
-D Trilinos_ENABLE_TESTS:BOOL=OFF \
-D Trilinos_ENABLE_EXAMPLES:BOOL=OFF \
-D BUILD_SHARED_LIBS:BOOL=OFF \
-D Trilinos_SET_INSTALL_RPATH=OFF \
-D DART_TESTING_TIMEOUT:STRING=200 \
-D Trilinos_ENABLE_CXX11=ON \
\
-D TPL_ENABLE_MPI=ON \
-D MPI_EXEC:PATH="srun" \
-D MPI_EXEC_NUMPROCS_FLAG:STRING="-c;8;--cpu_bind=cores;-n" \
-D TPL_ENABLE_BLAS=ON \
-D BLAS_LIBRARY_DIRS:PATH="${BLAS_LAPACK_LIBRARY_DIRS}" \
-D BLAS_LIBRARY_NAMES:STRING="${BLAS_LAPACK_LIBRARY_NAMES}" \
-D TPL_ENABLE_LAPACK=ON \
-D LAPACK_LIBRARY_DIRS:PATH="${BLAS_LAPACK_LIBRARY_DIRS}" \
-D LAPACK_LIBRARY_NAMES:STRING="${BLAS_LAPACK_LIBRARY_NAMES}" \
\
-D TPL_ENABLE_Zlib=ON \
-D TPL_ENABLE_DLlib=ON \
\
-D TPL_ENABLE_yaml-cpp=ON \
-D yaml-cpp_LIBRARY_DIRS:PATH=${YAMLCPP_ROOT}/lib \
-D yaml-cpp_INCLUDE_DIRS:PATH=${YAMLCPP_ROOT}/include \
\
-D Trilinos_ENABLE_Kokkos=ON \
-D Kokkos_ENABLE_TESTS:BOOL=ON \
-D Trilinos_ENABLE_OpenMP=${OPENMP} \
-D Kokkos_ENABLE_Serial:BOOL=${SERIAL} \
-D Kokkos_ENABLE_OpenMP:BOOL=${OPENMP} \
-D Kokkos_ENABLE_Pthread:BOOL=${PTHREAD} \
-D Kokkos_ENABLE_Cuda:BOOL=${CUDA} \
-D TPL_ENABLE_Pthread=${PTHREAD} \
-D TPL_ENABLE_CUDA=${CUDA} \
-D Kokkos_ENABLE_Cuda_UVM:BOOL=ON \
-D Teuchos_ENABLE_COMPLEX=${COMPLEX} \
\
-D Trilinos_ENABLE_Tpetra=ON \
-D Tpetra_INST_SERIAL:BOOL=${SERIAL} \
-D Tpetra_INST_OPENMP:BOOL=${OPENMP} \
-D Tpetra_INST_PTHREAD:BOOL=${PTHREAD} \
-D Tpetra_INST_CUDA:BOOL=${CUDA} \
-D Tpetra_INST_COMPLEX_DOUBLE:BOOL=${COMPLEX} \
-D Tpetra_ENABLE_TESTS:BOOL=${TESTS} \
-D Tpetra_ENABLE_EXAMPLES:BOOL=${EXAMPLES} \
\
-D Trilinos_ENABLE_Belos=ON \
\
${MUELU_DETAILS} \
\
$EXTRA_ARGS \
${TRILINOS_PATH}
@trilinos/muelu