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>
95template<
class T ,
class ... P >
97typename std::enable_if<
98 std::is_same<
typename ViewTraits<T,P...>::specialize ,
99 Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value &&
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 ,
109 Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value &&
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 ,
119 Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value,
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 ,
128 Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value &&
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 ,
139 Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value &&
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 ,
150 Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value,
153 Kokkos::Impl::WithoutInitializing_t wi,
155 const Kokkos::View<T,P...> & src);
157template <
class Space,
class T,
class... P>
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,
164 Kokkos::Experimental::Impl::ViewMPVectorContiguous>::value &&
168template <
class Space,
class T,
class... P>
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,
175 Kokkos::Experimental::Impl::ViewMPVectorContiguous>::value &&
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
186 , Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value
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
196 , Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value
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
208 , Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value
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
220 , Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value
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
230 , Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value
232 std::is_same<
typename ViewTraits<ST,SP...>::specialize
233 , Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value
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
244 , Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value
246 std::is_same<
typename ViewTraits<ST,SP...>::specialize
247 , Kokkos::Experimental::Impl::ViewMPVectorContiguous >::value
252template <
unsigned N,
typename... Args>
253KOKKOS_FUNCTION std::enable_if_t<
254 N ==
View<Args...>::Rank &&
255 std::is_same<
typename ViewTraits<Args...>::specialize,
256 Kokkos::Experimental::Impl::ViewMPVectorContiguous>::value,
262template <
unsigned N,
typename T,
typename... Args>
264 N !=
View<T, Args...>::Rank &&
265 std::is_same<
typename ViewTraits<T, Args...>::specialize,
266 Kokkos::Experimental::Impl::ViewMPVectorContiguous>::value,
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)