61#if defined(HAVE_TPETRA_INST_DOUBLE)
63#elif defined(HAVE_TPETRA_INST_FLOAT)
66# error "Tpetra: No scalar types in the set {float, double} have been enabled."
74#if defined(HAVE_TPETRA_INST_INT_LONG_LONG)
76#elif defined(HAVE_TPETRA_INST_INT_INT)
78#elif defined(HAVE_TPETRA_INST_INT_LONG)
80#elif defined(HAVE_TPETRA_INST_INT_UNSIGNED_LONG)
82#elif defined(HAVE_TPETRA_INST_INT_UNSIGNED)
85 #error "Tpetra: No global ordinal types in the set {int, long long, long, unsigned long, unsigned} have been enabled."
90#if defined(HAVE_TPETRA_DEFAULTNODE_SYCLWRAPPERNODE)
92 using node_type = ::Kokkos::Compat::KokkosSYCLWrapperNode;
93#elif defined(HAVE_TPETRA_DEFAULTNODE_HIPWRAPPERNODE)
95 using node_type = ::Kokkos::Compat::KokkosHIPWrapperNode;
96#elif defined(HAVE_TPETRA_DEFAULTNODE_CUDAWRAPPERNODE)
98 using node_type = ::Kokkos::Compat::KokkosCudaWrapperNode;
99#elif defined(HAVE_TPETRA_DEFAULTNODE_OPENMPWRAPPERNODE)
101 using node_type = ::Kokkos::Compat::KokkosOpenMPWrapperNode;
102#elif defined(HAVE_TPETRA_DEFAULTNODE_THREADSWRAPPERNODE)
104 using node_type = ::Kokkos::Compat::KokkosThreadsWrapperNode;
105#elif defined(HAVE_TPETRA_DEFAULTNODE_SERIALWRAPPERNODE)
107 using node_type = ::Kokkos::Compat::KokkosSerialWrapperNode;
109# error "No default Tpetra Node type specified. Please set the CMake option Tpetra_DefaultNode to a valid Node type."
116 template<
typename ExecutionSpace>
119 using type =
typename ExecutionSpace::memory_space;
122#ifdef KOKKOS_ENABLE_CUDA
126 using type = Kokkos::CudaSpace;
130#ifdef KOKKOS_ENABLE_HIP
132 struct CommBufferMemorySpace<Kokkos::Experimental::HIP>
134 using type = Kokkos::Experimental::HIPSpace;
138#ifdef KOKKOS_ENABLE_SYCL
140 struct CommBufferMemorySpace<Kokkos::Experimental::SYCL>
142 using type = Kokkos::Experimental::SYCLDeviceUSMSpace;
146 template<
typename Device>
147 using comm_buffer_memory_space =
typename CommBufferMemorySpace<typename Device::execution_space>::type;