42#ifndef KOKKOS_VIEW_MP_VECTOR_FWD_HPP
43#define KOKKOS_VIEW_MP_VECTOR_FWD_HPP
47#ifndef KOKKOS_IMPL_PUBLIC_INCLUDE
48#define KOKKOS_IMPL_PUBLIC_INCLUDE
49#define KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_CORE
53#include "Kokkos_Core_fwd.hpp"
54#include "Kokkos_View.hpp"
55#ifdef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_CORE
56#undef KOKKOS_IMPL_PUBLIC_INCLUDE
57#undef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_CORE
64 template <
typename Storage >
72 template<
class Space,
class T,
class ... P>
74 template<
class Space,
class T,
class ... P>
75 struct MirrorViewType;
81namespace Experimental {
84struct ViewMPVectorContiguous;
95template<
class T ,
class ... P >
97typename std::enable_if<
98 std::is_same<
typename ViewTraits<T,P...>::specialize ,
100 !std::is_same<
typename Kokkos::ViewTraits<T,P...>::array_layout,
101 Kokkos::LayoutStride >::value,
102 typename Kokkos::View<T,P...>::HostMirror>::type
105template<
class T ,
class ... P >
107typename std::enable_if<
108 std::is_same<
typename ViewTraits<T,P...>::specialize ,
110 std::is_same<
typename Kokkos::ViewTraits<T,P...>::array_layout,
111 Kokkos::LayoutStride >::value,
112 typename Kokkos::View<T,P...>::HostMirror>::type
115template<
class Space,
class T,
class ... P,
116 typename Enable = std::enable_if_t<Kokkos::is_space<Space>::value>>
117typename std::enable_if<
118 std::is_same<
typename ViewTraits<T,P...>::specialize ,
120 typename Impl::MirrorType<Space,T,P ...>::view_type>::type
122 const Kokkos::View<T,P...> & src);
124template<
class T ,
class ... P >
126typename std::enable_if<
127 std::is_same<
typename ViewTraits<T,P...>::specialize ,
129 !std::is_same<
typename Kokkos::ViewTraits<T,P...>::array_layout,
130 Kokkos::LayoutStride >::value,
131 typename Kokkos::View<T,P...>::HostMirror>::type
133 const Kokkos::View<T,P...> & src);
135template<
class T ,
class ... P >
137typename std::enable_if<
138 std::is_same<
typename ViewTraits<T,P...>::specialize ,
140 std::is_same<
typename Kokkos::ViewTraits<T,P...>::array_layout,
141 Kokkos::LayoutStride >::value,
142 typename Kokkos::View<T,P...>::HostMirror>::type
144 const Kokkos::View<T,P...> & src);
146template<
class Space,
class T,
class ... P,
147 typename Enable = std::enable_if_t<Kokkos::is_space<Space>::value>>
148typename std::enable_if<
149 std::is_same<
typename ViewTraits<T,P...>::specialize ,
151 typename Impl::MirrorType<Space,T,P ...>::view_type>::type
153 Kokkos::Impl::WithoutInitializing_t wi,
155 const Kokkos::View<T,P...> & src);
157template <
class Space,
class T,
class... P>
158typename Impl::MirrorViewType<Space, T, P...>::view_type
160 const Space&,
const Kokkos::View<T, P...>& src,
161 std::string
const& name =
"",
162 typename std::enable_if<
163 std::is_same<
typename ViewTraits<T, P...>::specialize,
165 Impl::MirrorViewType<Space, T, P...>::is_same_memspace>::type* =
168template <
class Space,
class T,
class... P>
169typename Impl::MirrorViewType<Space, T, P...>::view_type
171 const Space&,
const Kokkos::View<T, P...>& src,
172 std::string
const& name =
"",
173 typename std::enable_if<
174 std::is_same<
typename ViewTraits<T, P...>::specialize,
176 !Impl::MirrorViewType<Space, T, P...>::is_same_memspace>::type* =
180template<
class DT,
class ... DP >
182 const View<DT,DP...> & view ,
183 const typename View<DT,DP...>::array_type::value_type & value
184 ,
typename std::enable_if<(
185 std::is_same<
typename ViewTraits<DT,DP...>::specialize
190template<
class DT,
class ... DP >
192 const View<DT,DP...> & view ,
193 const typename View<DT,DP...>::value_type & value
194 ,
typename std::enable_if<(
195 std::is_same<
typename ViewTraits<DT,DP...>::specialize
200template<
class ExecSpace ,
class DT,
class ... DP >
203 const View<DT,DP...> & view ,
204 const typename View<DT,DP...>::array_type::value_type & value
205 ,
typename std::enable_if<(
206 Kokkos::is_execution_space< ExecSpace >::value &&
207 std::is_same<
typename ViewTraits<DT,DP...>::specialize
212template<
class ExecSpace ,
class DT,
class ... DP >
215 const View<DT,DP...> & view ,
216 const typename View<DT,DP...>::value_type & value
217 ,
typename std::enable_if<(
218 Kokkos::is_execution_space< ExecSpace >::value &&
219 std::is_same<
typename ViewTraits<DT,DP...>::specialize
224template<
class DT ,
class ... DP ,
class ST ,
class ... SP >
226void deep_copy(
const View<DT,DP...> & dst ,
227 const View<ST,SP...> & src
228 ,
typename std::enable_if<(
229 std::is_same<
typename ViewTraits<DT,DP...>::specialize
232 std::is_same<
typename ViewTraits<ST,SP...>::specialize
237template<
class ExecSpace,
class DT ,
class ... DP ,
class ST ,
class ... SP >
240 const View<DT,DP...> & dst ,
241 const View<ST,SP...> & src
242 ,
typename std::enable_if<(
243 std::is_same<
typename ViewTraits<DT,DP...>::specialize
246 std::is_same<
typename ViewTraits<ST,SP...>::specialize
252template <
unsigned N,
typename... Args>
253KOKKOS_FUNCTION std::enable_if_t<
254 N ==
View<Args...>::Rank &&
255 std::is_same<
typename ViewTraits<Args...>::specialize,
262template <
unsigned N,
typename T,
typename... Args>
264 N !=
View<T, Args...>::Rank &&
265 std::is_same<
typename ViewTraits<T, Args...>::specialize,
267 View<
typename RankDataType<
typename View<T, Args...>::value_type, N>::type,
KOKKOS_FUNCTION std::enable_if_t< N==View< Args... >::Rank &&std::is_same< typename ViewTraits< Args... >::specialize, Kokkos::Experimental::Impl::ViewPCEContiguous >::value, View< Args... > > as_view_of_rank_n(View< Args... > v)
void deep_copy(const Stokhos::CrsMatrix< ValueType, DstDevice, Layout > &dst, const Stokhos::CrsMatrix< ValueType, SrcDevice, Layout > &src)
Stokhos::CrsMatrix< ValueType, Device, Layout >::HostMirror create_mirror(const Stokhos::CrsMatrix< ValueType, Device, Layout > &A)
Impl::MirrorViewType< Space, T, P... >::view_type create_mirror_view_and_copy(const Space &, const Kokkos::View< T, P... > &src, std::string const &name="", typename std::enable_if< std::is_same< typename ViewTraits< T, P... >::specialize, Kokkos::Experimental::Impl::ViewPCEContiguous >::value &&Impl::MirrorViewType< Space, T, P... >::is_same_memspace >::type *=nullptr)