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 typedef double scalar_type;
65 #elif defined(HAVE_TPETRA_INST_FLOAT)
66 typedef float scalar_type;
68 # error "Tpetra: No scalar types in the set {float, double} have been enabled."
76 #if defined(HAVE_TPETRA_INST_INT_INT)
77 typedef int global_ordinal_type;
78 #elif defined(HAVE_TPETRA_INST_INT_LONG_LONG)
79 typedef long long global_ordinal_type;
80 #elif defined(HAVE_TPETRA_INST_INT_LONG)
81 typedef long global_ordinal_type;
82 #elif defined(HAVE_TPETRA_INST_INT_UNSIGNED_LONG)
83 typedef unsigned long global_ordinal_type;
84 #elif defined(HAVE_TPETRA_INST_INT_UNSIGNED)
85 typedef unsigned global_ordinal_type;
87 # error "Tpetra: No global ordinal types in the set {int, long long, long, unsigned long, unsigned} have been enabled."
92 #if defined(HAVE_TPETRA_DEFAULTNODE_CUDAWRAPPERNODE)
93 using execution_space = ::Kokkos::Cuda;
94 #elif defined(HAVE_TPETRA_DEFAULTNODE_OPENMPWRAPPERNODE)
95 using execution_space = ::Kokkos::OpenMP;
96 #elif defined(HAVE_TPETRA_DEFAULTNODE_THREADSWRAPPERNODE)
97 using execution_space = ::Kokkos::Threads;
98 #elif defined(HAVE_TPETRA_DEFAULTNODE_SERIALWRAPPERNODE)
99 using execution_space = ::Kokkos::Serial;
101 # error "No default Tpetra Node type specified. Please set the CMake option Tpetra_DefaultNode to a valid Node type."
105 using node_type = ::Kokkos::Compat::KokkosDeviceWrapperNode<execution_space>;
112 #endif // TPETRA_DETAILS_DEFAULTTYPES_HPP