MueLu Version of the Day
Loading...
Searching...
No Matches
MueLu_LWGraph_kokkos_def.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// MueLu: A package for multigrid based preconditioning
4//
5// Copyright 2012 NTESS and the MueLu contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef MUELU_LWGRAPH_KOKKOS_DEF_HPP
11#define MUELU_LWGRAPH_KOKKOS_DEF_HPP
12
13#include "MueLu_LWGraph.hpp"
15
16namespace MueLu {
17
18template <class LocalOrdinal, class GlobalOrdinal, class Node>
19RCP<MueLu::LWGraph<LocalOrdinal, GlobalOrdinal, Node> > MueLu::LWGraph_kokkos<LocalOrdinal, GlobalOrdinal, Node>::copyToHost() {
20 // This could be improved to skip copies for UVM.
21
22 auto graph = this->getGraph();
23
24 auto row_map_h = Kokkos::create_mirror_view(graph.row_map);
25 auto entries_h = Kokkos::create_mirror_view(graph.entries);
26 Kokkos::deep_copy(row_map_h, graph.row_map);
27 Kokkos::deep_copy(entries_h, graph.entries);
28
30 auto graph_h = local_graph_type_host(entries_h, row_map_h);
31
32 auto lw_h = rcp(new MueLu::LWGraph<LocalOrdinal, GlobalOrdinal, Node>(graph_h, this->GetDomainMap(), this->GetImportMap(), this->getObjectLabel()));
33
35
36 auto bndry = this->GetBoundaryNodeMap();
37 auto bndry_h = bndry_nodes_type("boundary_nodes", bndry.extent(0));
38 Kokkos::deep_copy(bndry_h, bndry);
39 lw_h->SetBoundaryNodeMap(bndry_h);
40
41 return lw_h;
42}
43
44} // namespace MueLu
45
46#endif // MUELU_LWGRAPH_KOKKOS_DEF_HPP
typename std::conditional< OnHost, typename local_graph_device_type::HostMirror, local_graph_device_type >::type local_graph_type
Kokkos::View< bool *, memory_space > boundary_nodes_type
RCP< MueLu::LWGraph< LocalOrdinal, GlobalOrdinal, Node > > copyToHost()
Lightweight MueLu representation of a compressed row storage graph.
Namespace for MueLu classes and methods.