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>
81 namespace Experimental {
95 template<
class T ,
class ... P >
97 typename 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
105 template<
class T ,
class ... P >
107 typename 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
115 template<
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);
124 template<
class T ,
class ... P >
126 typename 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);
135 template<
class T ,
class ... P >
137 typename 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);
146 template<
class Space,
class T,
class ... P,
147 typename Enable = std::enable_if_t<Kokkos::is_space<Space>::value>>
148 typename 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);
155 template <
class Space,
class T,
class... P>
156 typename 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* =
166 template <
class Space,
class T,
class... P>
167 typename 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* =
178 template<
class DT,
class ... DP >
180 const View<DT,DP...> & view ,
182 ,
typename std::enable_if<(
183 std::is_same<
typename ViewTraits<DT,DP...>::specialize
188 template<
class DT,
class ... DP >
190 const View<DT,DP...> & view ,
192 ,
typename std::enable_if<(
193 std::is_same<
typename ViewTraits<DT,DP...>::specialize
198 template<
class ExecSpace ,
class DT,
class ... DP >
201 const View<DT,DP...> & view ,
203 ,
typename std::enable_if<(
204 Kokkos::is_execution_space< ExecSpace >::value &&
205 std::is_same<
typename ViewTraits<DT,DP...>::specialize
210 template<
class ExecSpace ,
class DT,
class ... DP >
213 const View<DT,DP...> & view ,
215 ,
typename std::enable_if<(
216 Kokkos::is_execution_space< ExecSpace >::value &&
217 std::is_same<
typename ViewTraits<DT,DP...>::specialize
222 template<
class DT ,
class ... DP ,
class ST ,
class ... SP >
224 void 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
235 template<
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
250 template <
unsigned N,
typename... Args>
251 KOKKOS_FUNCTION std::enable_if_t<
252 N ==
View<Args...>::Rank &&
253 std::is_same<
typename ViewTraits<Args...>::specialize,
260 template <
unsigned N,
typename T,
typename... Args>
262 N !=
View<T, Args...>::Rank &&
263 std::is_same<
typename ViewTraits<T, Args...>::specialize,
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)
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)
Stokhos::CrsMatrix< ValueType, Device, Layout >::HostMirror create_mirror(const Stokhos::CrsMatrix< ValueType, Device, Layout > &A)