*/ // Including this is the easy way to get access to all the Node types. #include "Kokkos_DefaultNode.hpp" // Don't bother compiling anything, or even including anything else, // unless KokkosThreadsWrapperNode is enabled. #if defined(HAVE_KOKKOSCLASSIC_KOKKOSCOMPAT) && defined(KOKKOS_HAVE_PTHREAD) #include "Tpetra_CrsMatrix.hpp" #ifdef HAVE_TPETRA_EXPLICIT_INSTANTIATION #include "Tpetra_ETIHelperMacros.h" #include "Tpetra_CrsMatrix_def.hpp" #define TPETRA_CRSMATRIX_THREADSWRAPPERNODE_INSTANT( SCALAR, LO, GO ) \ TPETRA_CRSMATRIX_INSTANT( SCALAR, LO, GO, Kokkos::Compat::KokkosThreadsWrapperNode ) namespace Tpetra { TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_SLG(TPETRA_CRSMATRIX_THREADSWRAPPERNODE_INSTANT) // convert() gets instantiated in a separate file, Tpetra_CrsMatrix_convert.cpp } // namespace Tpetra #endif // HAVE_TPETRA_EXPLICIT_INSTANTIATION #endif // HAVE_KOKKOSCLASSIC_KOKKOSCOMPAT && KOKKOS_HAVE_PTHREAD
#ifdef HAVE_TPETRA_EXPLICIT_INSTANTIATION #include "Tpetra_ETIHelperMacros.h" #include "Tpetra_CrsMatrix_def.hpp" #include "Tpetra_CrsGraph_def.hpp" #define TPETRA_CRSMATRIX_OPENMPNODE_INSTANT( SCALAR, LO, GO ) \ TPETRA_CRSMATRIX_INSTANT( SCALAR, LO, GO, KokkosClassic::OpenMPNode ) #define TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_OPENMPNODE_INSTANT( SCALAR, LO, GO ) \ TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT( SCALAR, LO, GO, KokkosClassic::OpenMPNode ) #define TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_OPENMPNODE_INSTANT( SCALAR, LO, GO ) \ TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT( SCALAR, LO, GO, KokkosClassic::OpenMPNode ) namespace Tpetra { TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_SLG(TPETRA_CRSMATRIX_OPENMPNODE_INSTANT) TPETRA_INSTANTIATE_SLG(TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_OPENMPNODE_INSTANT) TPETRA_INSTANTIATE_SLG(TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_OPENMPNODE_INSTANT) // convert() gets instantiated in a separate file, Tpetra_CrsMatrix_convert.cpp } // namespace Tpetra #endif // HAVE_TPETRA_EXPLICIT_INSTANTIATION #endif // HAVE_KOKKOSCLASSIC_OPENMP
// Don't bother compiling anything, or even including anything else, // unless KokkosOpenMPWrapperNode is enabled. #if defined(HAVE_TPETRA_EXPLICIT_INSTANTIATION) && defined(HAVE_TPETRA_INST_OPENMP) #include "Tpetra_CrsGraph_decl.hpp" #include "TpetraCore_ETIHelperMacros.h" #include "Tpetra_CrsGraph_def.hpp" // The first macro instantiates just the graph stuff. The second // instantiates CrsGraph methods templated on Scalar type that // CrsMatrix needs. The two must be handled separately, to avoid link // errors resulting from redundant instantiations. #define TPETRA_CRSGRAPH_GRAPH_INSTANT_OPENMPWRAPPERNODE( LO, GO ) \ TPETRA_CRSGRAPH_GRAPH_INSTANT( LO, GO, Kokkos::Compat::KokkosOpenMPWrapperNode ) #define TPETRA_CRSGRAPH_INSTANT_OPENMPWRAPPERNODE( SCALAR, LO, GO ) \ TPETRA_CRSGRAPH_INSTANT( SCALAR, LO, GO, Kokkos::Compat::KokkosOpenMPWrapperNode ) namespace Tpetra { TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_LG(TPETRA_CRSGRAPH_GRAPH_INSTANT_OPENMPWRAPPERNODE) TPETRA_INSTANTIATE_SLG(TPETRA_CRSGRAPH_INSTANT_OPENMPWRAPPERNODE) } // namespace Tpetra #endif // defined(HAVE_TPETRA_EXPLICIT_INSTANTIATION) && defined(HAVE_TPETRA_INST_OPENMP)
*/ // Including this is the easy way to get access to all the Node types. #include "Kokkos_DefaultNode.hpp" // Don't bother compiling anything, or even including anything else, // unless KokkosThreadsWrapperNode is enabled. #if defined(HAVE_KOKKOSCLASSIC_KOKKOSCOMPAT) && defined(KOKKOS_HAVE_CUDA) #include "Tpetra_CrsMatrix.hpp" #ifdef HAVE_TPETRA_EXPLICIT_INSTANTIATION #include "Tpetra_ETIHelperMacros.h" #include "Tpetra_CrsMatrix_def.hpp" #define TPETRA_CRSMATRIX_CUDAWRAPPERNODE_INSTANT( SCALAR, LO, GO ) \ TPETRA_CRSMATRIX_INSTANT( SCALAR, LO, GO, Kokkos::Compat::KokkosCudaWrapperNode ) namespace Tpetra { TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_SLG(TPETRA_CRSMATRIX_CUDAWRAPPERNODE_INSTANT) // convert() gets instantiated in a separate file, Tpetra_CrsMatrix_convert.cpp } // namespace Tpetra #endif // HAVE_TPETRA_EXPLICIT_INSTANTIATION #endif // HAVE_KOKKOSCLASSIC_KOKKOSCOMPAT && KOKKOS_HAVE_CUDA
// Don't bother compiling anything, or even including anything else, // unless KokkosCudaWrapperNode is enabled. #if defined(HAVE_TPETRA_EXPLICIT_INSTANTIATION) && defined(HAVE_TPETRA_INST_CUDA) #include "Tpetra_CrsGraph_decl.hpp" #include "TpetraCore_ETIHelperMacros.h" #include "Tpetra_CrsGraph_def.hpp" // The first macro instantiates just the graph stuff. The second // instantiates CrsGraph methods templated on Scalar type that // CrsMatrix needs. The two must be handled separately, to avoid link // errors resulting from redundant instantiations. #define TPETRA_CRSGRAPH_GRAPH_INSTANT_CUDAWRAPPERNODE( LO, GO ) \ TPETRA_CRSGRAPH_GRAPH_INSTANT( LO, GO, Kokkos::Compat::KokkosCudaWrapperNode ) #define TPETRA_CRSGRAPH_INSTANT_CUDAWRAPPERNODE( SCALAR, LO, GO ) \ TPETRA_CRSGRAPH_INSTANT( SCALAR, LO, GO, Kokkos::Compat::KokkosCudaWrapperNode ) namespace Tpetra { TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_LG(TPETRA_CRSGRAPH_GRAPH_INSTANT_CUDAWRAPPERNODE) TPETRA_INSTANTIATE_SLG(TPETRA_CRSGRAPH_INSTANT_CUDAWRAPPERNODE) } // namespace Tpetra #endif // defined(HAVE_TPETRA_EXPLICIT_INSTANTIATION) && defined(HAVE_TPETRA_INST_CUDA)
// Don't bother compiling anything, or even including anything else, // unless TBBNode is enabled. #if defined(HAVE_TPETRA_EXPLICIT_INSTANTIATION) && defined(HAVE_KOKKOSCLASSIC_TBB) #include "Tpetra_CrsGraph_decl.hpp" #include "TpetraCore_ETIHelperMacros.h" #include "Tpetra_CrsGraph_def.hpp" // The first macro instantiates just the graph stuff. The second // instantiates CrsGraph methods templated on Scalar type that // CrsMatrix needs. The two must be handled separately, to avoid link // errors resulting from redundant instantiations. #define TPETRA_CRSGRAPH_GRAPH_INSTANT_TBBNODE( LO, GO ) \ TPETRA_CRSGRAPH_GRAPH_INSTANT( LO, GO, KokkosClassic::DoNotUse::TBBNode ) #define TPETRA_CRSGRAPH_INSTANT_TBBNODE( SCALAR, LO, GO ) \ TPETRA_CRSGRAPH_INSTANT( SCALAR, LO, GO, KokkosClassic::DoNotUse::TBBNode ) namespace Tpetra { TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_LG(TPETRA_CRSGRAPH_GRAPH_INSTANT_TBBNODE) TPETRA_INSTANTIATE_SLG(TPETRA_CRSGRAPH_INSTANT_TBBNODE) } // namespace Tpetra #endif // defined(HAVE_TPETRA_EXPLICIT_INSTANTIATION) && defined(HAVE_KOKKOSCLASSIC_TBB)
// ************************************************************************ // @HEADER */ // Including this is the easy way to get access to all the Node types. #include "Kokkos_DefaultNode.hpp" // Don't bother compiling anything, or even including anything else, // unless TPINode is enabled. #ifdef HAVE_KOKKOSCLASSIC_THREADPOOL # include "Tpetra_MultiVector.hpp" # ifdef HAVE_TPETRA_EXPLICIT_INSTANTIATION # include "Tpetra_ETIHelperMacros.h" # include "Tpetra_MultiVector_def.hpp" # define TPETRA_MULTIVECTOR_TPINODE_INSTANT( SCALAR, LO, GO ) \ TPETRA_MULTIVECTOR_INSTANT( SCALAR, LO, GO, KokkosClassic::TPINode ) namespace Tpetra { TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_SLG(TPETRA_MULTIVECTOR_TPINODE_INSTANT) } // namespace Tpetra # endif // HAVE_TPETRA_EXPLICIT_INSTANTIATION #endif // HAVE_KOKKOSCLASSIC_THREADPOOL
// ************************************************************************ // @HEADER */ // Including this is the easy way to get access to all the Node types. #include <Kokkos_DefaultNode.hpp> #include <Tpetra_ConfigDefs.hpp> // Don't bother compiling anything, or even including anything else, // unless SerialNode is enabled. #if defined(HAVE_TPETRA_EXPLICIT_INSTANTIATION) && defined(HAVE_KOKKOSCLASSIC_SERIAL) #include "Tpetra_CrsMatrix_decl.hpp" #include "TpetraCore_ETIHelperMacros.h" #include "Tpetra_CrsMatrix_def.hpp" #define TPETRA_CRSMATRIX_SERIALNODE_INSTANT( SCALAR, LO, GO ) \ TPETRA_CRSMATRIX_INSTANT( SCALAR, LO, GO, KokkosClassic::DoNotUse::SerialNode ) namespace Tpetra { TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_SLG(TPETRA_CRSMATRIX_SERIALNODE_INSTANT) // convert() gets instantiated in a separate file, Tpetra_CrsMatrix_convert.cpp } // namespace Tpetra #endif // defined(HAVE_TPETRA_EXPLICIT_INSTANTIATION) && defined(HAVE_KOKKOSCLASSIC_SERIAL)