40 #ifndef TPETRA_DETAILS_DEFAULTTYPES_HPP 41 #define TPETRA_DETAILS_DEFAULTTYPES_HPP 43 #include "TpetraCore_config.h" 44 #include "KokkosClassic_DefaultNode_config.h" 45 #include "KokkosCompat_ClassicNodeAPI_Wrapper.hpp" 59 namespace DefaultTypes {
61 #if defined(HAVE_TPETRA_INST_DOUBLE) 62 using scalar_type = double;
63 #elif defined(HAVE_TPETRA_INST_FLOAT) 64 using scalar_type = float;
66 # error "Tpetra: No scalar types in the set {float, double} have been enabled." 74 #if defined(HAVE_TPETRA_INST_INT_LONG_LONG) 75 using global_ordinal_type =
long long;
76 #elif defined(HAVE_TPETRA_INST_INT_INT) 77 using global_ordinal_type = int;
78 #elif defined(HAVE_TPETRA_INST_INT_LONG) 79 using global_ordinal_type = long;
80 #elif defined(HAVE_TPETRA_INST_INT_UNSIGNED_LONG) 81 using global_ordinal_type =
unsigned long;
82 #elif defined(HAVE_TPETRA_INST_INT_UNSIGNED) 83 using global_ordinal_type = 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) 91 using execution_space = ::Kokkos::Experimental::SYCL;
92 using node_type = ::Kokkos::Compat::KokkosSYCLWrapperNode;
93 #elif defined(HAVE_TPETRA_DEFAULTNODE_HIPWRAPPERNODE) 94 using execution_space = ::Kokkos::Experimental::HIP;
95 using node_type = ::Kokkos::Compat::KokkosHIPWrapperNode;
96 #elif defined(HAVE_TPETRA_DEFAULTNODE_CUDAWRAPPERNODE) 97 using execution_space = ::Kokkos::Cuda;
98 using node_type = ::Kokkos::Compat::KokkosCudaWrapperNode;
99 #elif defined(HAVE_TPETRA_DEFAULTNODE_OPENMPWRAPPERNODE) 100 using execution_space = ::Kokkos::OpenMP;
101 using node_type = ::Kokkos::Compat::KokkosOpenMPWrapperNode;
102 #elif defined(HAVE_TPETRA_DEFAULTNODE_THREADSWRAPPERNODE) 103 using execution_space = ::Kokkos::Threads;
104 using node_type = ::Kokkos::Compat::KokkosThreadsWrapperNode;
105 #elif defined(HAVE_TPETRA_DEFAULTNODE_SERIALWRAPPERNODE) 106 using execution_space = ::Kokkos::Serial;
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;
155 #endif // TPETRA_DETAILS_DEFAULTTYPES_HPP Namespace Tpetra contains the class and methods constituting the Tpetra library.
int local_ordinal_type
Default value of Scalar template parameter.
Implementation details of Tpetra.
Memory space used for MPI communication buffers.