46 #ifndef MUELU_LWGRAPH_KOKKOS_DECL_HPP 47 #define MUELU_LWGRAPH_KOKKOS_DECL_HPP 50 #ifdef HAVE_MUELU_KOKKOS_REFACTOR 52 #include <Kokkos_StaticCrsGraph.hpp> 53 #include <KokkosCompat_ClassicNodeAPI_Wrapper.hpp> 71 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
75 template<
class LocalOrdinal,
class GlobalOrdinal,
class DeviceType>
76 class LWGraph_kokkos<LocalOrdinal, GlobalOrdinal,
Kokkos::Compat::KokkosDeviceWrapperNode<DeviceType>> {
79 typedef GlobalOrdinal global_ordinal_type;
80 typedef typename DeviceType::execution_space execution_space;
81 typedef Kokkos::Compat::KokkosDeviceWrapperNode<DeviceType>
node_type;
82 typedef size_t size_type;
85 typedef Kokkos::StaticCrsGraph<LocalOrdinal, Kokkos::LayoutLeft, execution_space> local_graph_type;
86 typedef Kokkos::View<const bool*, DeviceType> boundary_nodes_type;
87 typedef Kokkos::View<const LocalOrdinal*, DeviceType> row_type;
92 #undef MUELU_LWGRAPH_KOKKOS_SHORT 99 LWGraph_kokkos(
const local_graph_type& graph,
100 const RCP<const map_type>& domainMap,
101 const RCP<const map_type>& rangeMap,
102 const std::string& objectLabel =
"");
104 ~LWGraph_kokkos() { }
107 const RCP<const Teuchos::Comm<int> > GetComm()
const {
108 return domainMap_->getComm();
110 const RCP<const Map> GetDomainMap()
const {
114 const RCP<const Map> GetImportMap()
const {
119 KOKKOS_INLINE_FUNCTION size_type GetNodeNumVertices()
const {
120 return graph_.numRows();
123 KOKKOS_INLINE_FUNCTION size_type GetNodeNumEdges()
const {
124 return graph_.row_map(GetNodeNumVertices());
128 KOKKOS_INLINE_FUNCTION row_type getNeighborVertices(
LO i)
const {
129 auto rowPointers = graph_.row_map;
130 auto colIndices = graph_.entries;
132 return Kokkos::subview(colIndices, Kokkos::make_pair<size_t,size_t>(rowPointers(i), rowPointers(i+1)));
136 KOKKOS_INLINE_FUNCTION
bool isLocalNeighborVertex(
LO i)
const {
137 return i >= minLocalIndex_ && i <= maxLocalIndex_;
141 KOKKOS_INLINE_FUNCTION
void SetBoundaryNodeMap(
const boundary_nodes_type bndry) {
142 dirichletBoundaries_ = bndry;
146 KOKKOS_INLINE_FUNCTION size_type getNodeMaxNumRowEntries ()
const {
147 return maxNumRowEntries_;
151 KOKKOS_INLINE_FUNCTION
const boundary_nodes_type GetBoundaryNodeMap()
const {
152 return dirichletBoundaries_;
156 std::string description()
const {
157 return "LWGraph (" + objectLabel_ +
")";
166 const local_graph_type graph_;
169 const RCP<const map_type> domainMap_;
170 const RCP<const map_type> importMap_;
173 boundary_nodes_type dirichletBoundaries_;
176 LO minLocalIndex_, maxLocalIndex_;
177 size_type maxNumRowEntries_;
180 const std::string& objectLabel_;
185 #define MUELU_LWGRAPH_KOKKOS_SHORT 186 #endif // HAVE_MUELU_KOKKOS_REFACTOR 187 #endif // MUELU_LWGRAPH_KOKKOS_DECL_HPP KokkosClassic::DefaultNode::DefaultNodeType node_type
Namespace for MueLu classes and methods.