9#include <Kokkos_Core.hpp>
19template <
class Space,
class ElementType,
class Support,
class Layout,
class MemorySpace>
22 ChunkSpan<ElementType, Support, Layout, MemorySpace>
const& src)
26 Kokkos::is_memory_space_v<Space> || Kokkos::is_execution_space_v<Space>,
27 "DDC: parameter \"Space\" must be either a Kokkos execution space or a memory space");
29 std::is_same_v<Layout, Kokkos::layout_right>,
30 "DDC: parameter \"Layout\" must be a `layout_right`");
33 KokkosAllocator<std::remove_const_t<ElementType>,
typename Space::memory_space>());
39template <
class ElementType,
class Support,
class Layout,
class MemorySpace>
42 return create_mirror(Kokkos::HostSpace(), src);
48template <
class Space,
class ElementType,
class Support,
class Layout,
class MemorySpace>
51 ChunkSpan<ElementType, Support, Layout, MemorySpace>
const& src)
54 Kokkos::is_memory_space_v<Space> || Kokkos::is_execution_space_v<Space>,
55 "DDC: parameter \"Space\" must be either a Kokkos execution space or a memory space");
57 std::is_same_v<Layout, Kokkos::layout_right>,
58 "DDC: parameter \"Layout\" must be a `layout_right`");
59 Chunk chunk = create_mirror(space, src);
60 parallel_deepcopy(chunk, src);
67template <
class ElementType,
class Support,
class Layout,
class MemorySpace>
70 return create_mirror_and_copy(Kokkos::HostSpace(), src);
76template <
class Space,
class ElementType,
class Support,
class Layout,
class MemorySpace>
79 ChunkSpan<ElementType, Support, Layout, MemorySpace>
const& src)
82 !std::is_const_v<ElementType>,
83 "DDC: parameter \"ElementType\" must not be `const`");
85 Kokkos::is_memory_space_v<Space> || Kokkos::is_execution_space_v<Space>,
86 "DDC: parameter \"Space\" must be either a Kokkos execution space or a memory space");
88 std::is_same_v<Layout, Kokkos::layout_right>,
89 "DDC: parameter \"Layout\" must be a `layout_right`");
90 if constexpr (Kokkos::SpaceAccessibility<Space, MemorySpace>::accessible) {
93 return create_mirror(space, src);
100template <
class ElementType,
class Support,
class Layout,
class MemorySpace>
103 return create_mirror_view(Kokkos::HostSpace(), src);
109template <
class Space,
class ElementType,
class Support,
class Layout,
class MemorySpace>
112 ChunkSpan<ElementType, Support, Layout, MemorySpace>
const& src)
115 Kokkos::is_memory_space_v<Space> || Kokkos::is_execution_space_v<Space>,
116 "DDC: parameter \"Space\" must be either a Kokkos execution space or a memory space");
118 std::is_same_v<Layout, Kokkos::layout_right>,
119 "DDC: parameter \"Layout\" must be a `layout_right`");
120 if constexpr (Kokkos::SpaceAccessibility<Space, MemorySpace>::accessible) {
123 return create_mirror_and_copy(space, src);
130template <
class ElementType,
class Support,
class Layout,
class MemorySpace>
133 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)