42#ifndef KOKKOS_VIEW_UQ_PCE_FWD_HPP
43#define KOKKOS_VIEW_UQ_PCE_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>
81namespace Experimental {
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>>
117 typename 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 const Space&,
const Kokkos::View<T,P...> & src);
155template <
class Space,
class T,
class... P>
156typename Impl::MirrorViewType<Space, T, P...>::view_type
158 const Space&,
const Kokkos::View<T, P...>& src,
159 std::string
const& name =
"",
160 typename std::enable_if<
161 std::is_same<
typename ViewTraits<T, P...>::specialize,
163 Impl::MirrorViewType<Space, T, P...>::is_same_memspace>::type* =
166template <
class Space,
class T,
class... P>
167typename Impl::MirrorViewType<Space, T, P...>::view_type
169 const Space&,
const Kokkos::View<T, P...>& src,
170 std::string
const& name =
"",
171 typename std::enable_if<
172 std::is_same<
typename ViewTraits<T, P...>::specialize,
174 !Impl::MirrorViewType<Space, T, P...>::is_same_memspace>::type* =
178template<
class DT,
class ... DP >
180 const View<DT,DP...> & view ,
181 const typename View<DT,DP...>::array_type::value_type & value
182 ,
typename std::enable_if<(
183 std::is_same<
typename ViewTraits<DT,DP...>::specialize
188template<
class DT,
class ... DP >
190 const View<DT,DP...> & view ,
191 const typename View<DT,DP...>::value_type & value
192 ,
typename std::enable_if<(
193 std::is_same<
typename ViewTraits<DT,DP...>::specialize
198template<
class ExecSpace ,
class DT,
class ... DP >
201 const View<DT,DP...> & view ,
202 const typename View<DT,DP...>::array_type::value_type & value
203 ,
typename std::enable_if<(
204 Kokkos::is_execution_space< ExecSpace >::value &&
205 std::is_same<
typename ViewTraits<DT,DP...>::specialize
210template<
class ExecSpace ,
class DT,
class ... DP >
213 const View<DT,DP...> & view ,
214 const typename View<DT,DP...>::value_type & value
215 ,
typename std::enable_if<(
216 Kokkos::is_execution_space< ExecSpace >::value &&
217 std::is_same<
typename ViewTraits<DT,DP...>::specialize
222template<
class DT ,
class ... DP ,
class ST ,
class ... SP >
224void deep_copy(
const View<DT,DP...> & dst ,
225 const View<ST,SP...> & src
226 ,
typename std::enable_if<(
227 std::is_same<
typename ViewTraits<DT,DP...>::specialize
230 std::is_same<
typename ViewTraits<ST,SP...>::specialize
235template<
class ExecSpace,
class DT ,
class ... DP ,
class ST ,
class ... SP >
238 const View<DT,DP...> & dst ,
239 const View<ST,SP...> & src
240 ,
typename std::enable_if<(
241 std::is_same<
typename ViewTraits<DT,DP...>::specialize
244 std::is_same<
typename ViewTraits<ST,SP...>::specialize
250template <
unsigned N,
typename... Args>
251KOKKOS_FUNCTION std::enable_if_t<
252 N ==
View<Args...>::Rank &&
253 std::is_same<
typename ViewTraits<Args...>::specialize,
260template <
unsigned N,
typename T,
typename... Args>
262 N !=
View<T, Args...>::Rank &&
263 std::is_same<
typename ViewTraits<T, Args...>::specialize,
265 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)