29namespace DefaultTypes {
 
   31#if defined(HAVE_TPETRA_INST_DOUBLE) 
   33#elif defined(HAVE_TPETRA_INST_FLOAT) 
   34using scalar_type         = 
float;
 
   36#error "Tpetra: No scalar types in the set {float, double} have been enabled." 
   44#if defined(HAVE_TPETRA_INST_INT_LONG_LONG) 
   45using global_ordinal_type = 
long long;
 
   46#elif defined(HAVE_TPETRA_INST_INT_INT) 
   47using global_ordinal_type = 
int;
 
   48#elif defined(HAVE_TPETRA_INST_INT_LONG) 
   49using global_ordinal_type = 
long;
 
   50#elif defined(HAVE_TPETRA_INST_INT_UNSIGNED_LONG) 
   51using global_ordinal_type = 
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) 
   61using execution_space = ::Kokkos::Experimental::SYCL;
 
   62using node_type       = Tpetra::KokkosCompat::KokkosSYCLWrapperNode;
 
   63#elif defined(HAVE_TPETRA_DEFAULTNODE_HIPWRAPPERNODE) 
   64using execution_space     = ::Kokkos::HIP;
 
   65using node_type           = Tpetra::KokkosCompat::KokkosHIPWrapperNode;
 
   66#elif defined(HAVE_TPETRA_DEFAULTNODE_CUDAWRAPPERNODE) 
   67using execution_space     = ::Kokkos::Cuda;
 
   68using node_type           = Tpetra::KokkosCompat::KokkosCudaWrapperNode;
 
   69#elif defined(HAVE_TPETRA_DEFAULTNODE_OPENMPWRAPPERNODE) 
   70using execution_space     = ::Kokkos::OpenMP;
 
   71using node_type           = Tpetra::KokkosCompat::KokkosOpenMPWrapperNode;
 
   72#elif defined(HAVE_TPETRA_DEFAULTNODE_THREADSWRAPPERNODE) 
   73using execution_space     = ::Kokkos::Threads;
 
   74using node_type           = Tpetra::KokkosCompat::KokkosThreadsWrapperNode;
 
   75#elif defined(HAVE_TPETRA_DEFAULTNODE_SERIALWRAPPERNODE) 
   76using execution_space = ::Kokkos::Serial;
 
   77using 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." 
   86template <
typename ExecutionSpace>
 
   88  using type = 
typename ExecutionSpace::memory_space;
 
 
   91#ifdef KOKKOS_ENABLE_CUDA 
   94  using type = Kokkos::CudaSpace;
 
   98#ifdef KOKKOS_ENABLE_HIP 
  100struct CommBufferMemorySpace<
Kokkos::
HIP> {
 
  101  using type = Kokkos::HIPSpace;
 
  105#ifdef KOKKOS_ENABLE_SYCL 
  107struct CommBufferMemorySpace<
Kokkos::Experimental::SYCL> {
 
  108  using type = Kokkos::Experimental::SYCLDeviceUSMSpace;
 
  112template <
typename Device>
 
  113using comm_buffer_memory_space = 
typename CommBufferMemorySpace<typename Device::execution_space>::type;