42 #ifndef TPETRA_DETAILS_DEFAULTTYPES_HPP
43 #define TPETRA_DETAILS_DEFAULTTYPES_HPP
45 #include "TpetraCore_config.h"
46 #include "KokkosClassic_DefaultNode_config.h"
47 #include "KokkosCompat_ClassicNodeAPI_Wrapper.hpp"
61 namespace DefaultTypes {
63 #if defined(HAVE_TPETRA_INST_DOUBLE)
64 using scalar_type = double;
65 #elif defined(HAVE_TPETRA_INST_FLOAT)
66 using scalar_type = float;
68 # error "Tpetra: No scalar types in the set {float, double} have been enabled."
76 #if defined(TPETRA_ENABLE_DEPRECATED_CODE)
77 #if defined(HAVE_TPETRA_INST_INT_INT)
78 using global_ordinal_type = int;
79 #elif defined(HAVE_TPETRA_INST_INT_LONG_LONG)
80 using global_ordinal_type =
long long;
81 #elif defined(HAVE_TPETRA_INST_INT_LONG)
82 using global_ordinal_type = long;
83 #elif defined(HAVE_TPETRA_INST_INT_UNSIGNED_LONG)
84 using global_ordinal_type =
unsigned long;
85 #elif defined(HAVE_TPETRA_INST_INT_UNSIGNED)
86 using global_ordinal_type = unsigned;
88 #error "Tpetra: No global ordinal types in the set {int, long long, long, unsigned long, unsigned} have been enabled."
90 #else // TPETRA_ENABLE_DEPRECATED_CODE IS NOT DEFINED
91 #if defined(HAVE_TPETRA_INST_INT_LONG_LONG)
92 using global_ordinal_type =
long long;
93 #elif defined(HAVE_TPETRA_INST_INT_INT)
94 using global_ordinal_type = int;
95 #elif defined(HAVE_TPETRA_INST_INT_LONG)
96 using global_ordinal_type = long;
97 #elif defined(HAVE_TPETRA_INST_INT_UNSIGNED_LONG)
98 using global_ordinal_type =
unsigned long;
99 #elif defined(HAVE_TPETRA_INST_INT_UNSIGNED)
100 using global_ordinal_type = unsigned;
102 #error "Tpetra: No global ordinal types in the set {int, long long, long, unsigned long, unsigned} have been enabled."
108 #if defined(HAVE_TPETRA_DEFAULTNODE_CUDAWRAPPERNODE)
109 using execution_space = ::Kokkos::Cuda;
110 #elif defined(HAVE_TPETRA_DEFAULTNODE_OPENMPWRAPPERNODE)
111 using execution_space = ::Kokkos::OpenMP;
112 #elif defined(HAVE_TPETRA_DEFAULTNODE_THREADSWRAPPERNODE)
113 using execution_space = ::Kokkos::Threads;
114 #elif defined(HAVE_TPETRA_DEFAULTNODE_SERIALWRAPPERNODE)
115 using execution_space = ::Kokkos::Serial;
117 # error "No default Tpetra Node type specified. Please set the CMake option Tpetra_DefaultNode to a valid Node type."
121 using node_type = ::Kokkos::Compat::KokkosDeviceWrapperNode<execution_space>;
126 template<
class ExecutionSpace>
128 #ifdef KOKKOS_ENABLE_CUDA
129 typename std::conditional<
130 std::is_same<typename ExecutionSpace::execution_space, Kokkos::Cuda>::value,
132 typename ExecutionSpace::memory_space>::type;
134 typename ExecutionSpace::memory_space;
135 #endif // KOKKOS_ENABLE_CUDA
143 #endif // TPETRA_DETAILS_DEFAULTTYPES_HPP
typename ExecutionSpace::memory_space comm_buffer_memory_space
Memory space used for MPI communication buffers.
int local_ordinal_type
Default value of Scalar template parameter.
::Kokkos::Compat::KokkosDeviceWrapperNode< execution_space > node_type
Default value of Node template parameter.