31#if defined(HAVE_TPETRA_INST_DOUBLE)
33#elif defined(HAVE_TPETRA_INST_FLOAT)
36# error "Tpetra: No scalar types in the set {float, double} have been enabled."
44#if defined(HAVE_TPETRA_INST_INT_LONG_LONG)
46#elif defined(HAVE_TPETRA_INST_INT_INT)
48#elif defined(HAVE_TPETRA_INST_INT_LONG)
50#elif defined(HAVE_TPETRA_INST_INT_UNSIGNED_LONG)
52#elif defined(HAVE_TPETRA_INST_INT_UNSIGNED)
55 #error "Tpetra: No global ordinal types in the set {int, long long, long, unsigned long, unsigned} have been enabled."
60#if defined(HAVE_TPETRA_DEFAULTNODE_SYCLWRAPPERNODE)
62 using node_type = Tpetra::KokkosCompat::KokkosSYCLWrapperNode;
63#elif defined(HAVE_TPETRA_DEFAULTNODE_HIPWRAPPERNODE)
65 using node_type = Tpetra::KokkosCompat::KokkosHIPWrapperNode;
66#elif defined(HAVE_TPETRA_DEFAULTNODE_CUDAWRAPPERNODE)
68 using node_type = Tpetra::KokkosCompat::KokkosCudaWrapperNode;
69#elif defined(HAVE_TPETRA_DEFAULTNODE_OPENMPWRAPPERNODE)
71 using node_type = Tpetra::KokkosCompat::KokkosOpenMPWrapperNode;
72#elif defined(HAVE_TPETRA_DEFAULTNODE_THREADSWRAPPERNODE)
74 using node_type = Tpetra::KokkosCompat::KokkosThreadsWrapperNode;
75#elif defined(HAVE_TPETRA_DEFAULTNODE_SERIALWRAPPERNODE)
77 using node_type = Tpetra::KokkosCompat::KokkosSerialWrapperNode;
79# error "No default Tpetra Node type specified. Please set the CMake option Tpetra_DefaultNode to a valid Node type."
86 template<
typename ExecutionSpace>
89 using type =
typename ExecutionSpace::memory_space;
92#ifdef KOKKOS_ENABLE_CUDA
96 using type = Kokkos::CudaSpace;
100#ifdef KOKKOS_ENABLE_HIP
102 struct CommBufferMemorySpace<Kokkos::HIP>
104 using type = Kokkos::HIPSpace;
108#ifdef KOKKOS_ENABLE_SYCL
110 struct CommBufferMemorySpace<Kokkos::Experimental::SYCL>
112 using type = Kokkos::Experimental::SYCLDeviceUSMSpace;
116 template<
typename Device>
117 using comm_buffer_memory_space =
typename CommBufferMemorySpace<typename Device::execution_space>::type;