9#include <Kokkos_Core.hpp>
19
20
21
22
23
24
25
26
27
28template <
class ElementType,
class Support,
class Layout,
class MemorySpace>
29auto create_layout_right_view_and_copy(
30 ChunkSpan<ElementType, Support, Layout, MemorySpace>
const& src)
32 if constexpr (std::is_same_v<Layout, Kokkos::layout_right>) {
36 parallel_deepcopy(chunk, src);
46template <
class Space,
class ElementType,
class Support,
class Layout,
class MemorySpace>
49 ChunkSpan<ElementType, Support, Layout, MemorySpace>
const& src)
53 Kokkos::is_memory_space_v<Space> || Kokkos::is_execution_space_v<Space>,
54 "DDC: parameter \"Space\" must be either a Kokkos execution space or a memory space");
56 std::is_same_v<Layout, Kokkos::layout_right>,
57 "DDC: parameter \"Layout\" must be a `layout_right`");
60 KokkosAllocator<std::remove_const_t<ElementType>,
typename Space::memory_space>());
66template <
class ElementType,
class Support,
class Layout,
class MemorySpace>
69 return create_mirror(Kokkos::HostSpace(), src);
75template <
class Space,
class ElementType,
class Support,
class Layout,
class MemorySpace>
78 ChunkSpan<ElementType, Support, Layout, MemorySpace>
const& src)
81 Kokkos::is_memory_space_v<Space> || Kokkos::is_execution_space_v<Space>,
82 "DDC: parameter \"Space\" must be either a Kokkos execution space or a memory space");
84 std::is_same_v<Layout, Kokkos::layout_right>,
85 "DDC: parameter \"Layout\" must be a `layout_right`");
86 Chunk chunk = create_mirror(space, src);
87 parallel_deepcopy(chunk, src);
94template <
class ElementType,
class Support,
class Layout,
class MemorySpace>
97 return create_mirror_and_copy(Kokkos::HostSpace(), src);
103template <
class Space,
class ElementType,
class Support,
class Layout,
class MemorySpace>
106 ChunkSpan<ElementType, Support, Layout, MemorySpace>
const& src)
109 !std::is_const_v<ElementType>,
110 "DDC: parameter \"ElementType\" must not be `const`");
112 Kokkos::is_memory_space_v<Space> || Kokkos::is_execution_space_v<Space>,
113 "DDC: parameter \"Space\" must be either a Kokkos execution space or a memory space");
115 std::is_same_v<Layout, Kokkos::layout_right>,
116 "DDC: parameter \"Layout\" must be a `layout_right`");
117 if constexpr (Kokkos::SpaceAccessibility<Space, MemorySpace>::accessible) {
120 return create_mirror(space, src);
127template <
class ElementType,
class Support,
class Layout,
class MemorySpace>
130 return create_mirror_view(Kokkos::HostSpace(), src);
136template <
class Space,
class ElementType,
class Support,
class Layout,
class MemorySpace>
139 ChunkSpan<ElementType, Support, Layout, MemorySpace>
const& src)
142 Kokkos::is_memory_space_v<Space> || Kokkos::is_execution_space_v<Space>,
143 "DDC: parameter \"Space\" must be either a Kokkos execution space or a memory space");
145 std::is_same_v<Layout, Kokkos::layout_right>,
146 "DDC: parameter \"Layout\" must be a `layout_right`");
147 if constexpr (Kokkos::SpaceAccessibility<Space, MemorySpace>::accessible) {
150 return create_mirror_and_copy(space, src);
157template <
class ElementType,
class Support,
class Layout,
class MemorySpace>
160 return create_mirror_view_and_copy(Kokkos::HostSpace(), src);
The top-level namespace of DDC.
auto create_mirror_view_and_copy(ChunkSpan< ElementType, Support, Layout, MemorySpace > const &src)
Equivalent to create_mirror_view_and_copy(Kokkos::HostSpace(), src).
auto create_mirror_view(ChunkSpan< ElementType, Support, Layout, MemorySpace > const &src)
Equivalent to create_mirror_view(Kokkos::HostSpace(), src).
auto create_mirror_view_and_copy(Space const &space, ChunkSpan< ElementType, Support, Layout, MemorySpace > const &src)
auto create_mirror_and_copy(Space const &space, ChunkSpan< ElementType, Support, Layout, MemorySpace > const &src)
auto create_mirror(ChunkSpan< ElementType, Support, Layout, MemorySpace > const &src)
Equivalent to create_mirror(Kokkos::HostSpace(), src).
auto create_mirror_and_copy(ChunkSpan< ElementType, Support, Layout, MemorySpace > const &src)
Equivalent to create_mirror_and_copy(Kokkos::HostSpace(), src).
auto create_mirror(Space const &space, ChunkSpan< ElementType, Support, Layout, MemorySpace > const &src)
auto create_mirror_view(Space const &space, ChunkSpan< ElementType, Support, Layout, MemorySpace > const &src)