30 #ifndef KOKKOS_VIEW_FAD_FWD_HPP 31 #define KOKKOS_VIEW_FAD_FWD_HPP 34 #if defined(HAVE_SACADO_KOKKOSCORE) 38 #ifndef KOKKOS_IMPL_PUBLIC_INCLUDE 39 #define KOKKOS_IMPL_PUBLIC_INCLUDE 40 #define KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_CORE 44 #include "Kokkos_Core_fwd.hpp" 45 #include "Kokkos_View.hpp" 46 #ifdef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_CORE 47 #undef KOKKOS_IMPL_PUBLIC_INCLUDE 48 #undef KOKKOS_IMPL_PUBLIC_INCLUDE_NOTDEFINED_CORE 54 template <
typename view_type>
60 #if defined(HAVE_SACADO_VIEW_SPEC) && !defined(SACADO_DISABLE_FAD_VIEW_SPEC) 65 struct ViewSpecializeSacadoFad;
66 struct ViewSpecializeSacadoFadContiguous;
76 template<
class DT,
class ... DP,
77 class ST,
class ... SP>
78 typename std::enable_if< is_view_fad< Kokkos::View<DT,DP...> >
::value &&
79 is_view_fad< Kokkos::View<ST,SP...> >
::value 81 view_copy(
const Kokkos::View<DT,DP...>& dst,
const Kokkos::View<ST,SP...>& src);
83 template<
class ExecutionSpace,
84 class DT,
class ... DP,
85 class ST,
class ... SP>
86 typename std::enable_if< is_view_fad< Kokkos::View<DT,DP...> >
::value &&
87 is_view_fad< Kokkos::View<ST,SP...> >
::value 89 view_copy(
const ExecutionSpace& space,
90 const Kokkos::View<DT,DP...>& dst,
const Kokkos::View<ST,SP...>& src);
92 template<
class Space,
class T,
class ... P>
94 template<
class Space,
class T,
class ... P>
95 struct MirrorViewType;
102 template<
class T ,
class ... P >
104 typename std::enable_if<
105 ( std::is_same<
typename ViewTraits<
T,P...>::specialize ,
106 Kokkos::Impl::ViewSpecializeSacadoFad >
::value ||
107 std::is_same<
typename ViewTraits<
T,P...>::specialize ,
108 Kokkos::Impl::ViewSpecializeSacadoFadContiguous >
::value ) &&
109 !std::is_same<
typename Kokkos::ViewTraits<T,P...>::array_layout,
110 Kokkos::LayoutStride >::
value,
111 typename Kokkos::View<T,P...>::HostMirror>::type
112 create_mirror(
const Kokkos::View<T,P...> & src);
114 template<
class T ,
class ... P >
116 typename std::enable_if<
117 ( std::is_same<
typename ViewTraits<
T,P...>::specialize ,
118 Kokkos::Impl::ViewSpecializeSacadoFad >
::value ||
119 std::is_same<
typename ViewTraits<
T,P...>::specialize ,
120 Kokkos::Impl::ViewSpecializeSacadoFadContiguous >
::value ) &&
121 std::is_same<
typename Kokkos::ViewTraits<T,P...>::array_layout,
122 Kokkos::LayoutStride >::
value,
123 typename Kokkos::View<T,P...>::HostMirror>::type
124 create_mirror(
const Kokkos::View<T,P...> & src);
126 template<
class Space,
class T,
class ... P,
128 typename std::enable_if<
129 std::is_same<
typename ViewTraits<
T,P...>::specialize ,
130 Kokkos::Impl::ViewSpecializeSacadoFad >
::value ||
131 std::is_same<
typename ViewTraits<
T,P...>::specialize ,
132 Kokkos::Impl::ViewSpecializeSacadoFadContiguous >
::value,
133 typename Impl::MirrorType<Space,
T,P ...>::view_type>::type
134 create_mirror(
const Space&,
const Kokkos::View<T,P...> & src);
136 template<
class T ,
class ... P >
138 typename std::enable_if<
139 ( std::is_same<
typename ViewTraits<
T,P...>::specialize ,
140 Kokkos::Impl::ViewSpecializeSacadoFad >
::value ||
141 std::is_same<
typename ViewTraits<
T,P...>::specialize ,
142 Kokkos::Impl::ViewSpecializeSacadoFadContiguous >
::value ) &&
143 !std::is_same<
typename Kokkos::ViewTraits<T,P...>::array_layout,
144 Kokkos::LayoutStride >::
value,
145 typename Kokkos::View<T,P...>::HostMirror>::type
146 create_mirror(Kokkos::Impl::WithoutInitializing_t wi,
147 const Kokkos::View<T,P...> & src);
149 template<
class T ,
class ... P >
151 typename std::enable_if<
152 ( std::is_same<
typename ViewTraits<
T,P...>::specialize ,
153 Kokkos::Impl::ViewSpecializeSacadoFad >
::value ||
154 std::is_same<
typename ViewTraits<
T,P...>::specialize ,
155 Kokkos::Impl::ViewSpecializeSacadoFadContiguous >
::value ) &&
156 std::is_same<
typename Kokkos::ViewTraits<T,P...>::array_layout,
157 Kokkos::LayoutStride >::
value,
158 typename Kokkos::View<T,P...>::HostMirror>::type
159 create_mirror(Kokkos::Impl::WithoutInitializing_t wi,
160 const Kokkos::View<T,P...> & src);
162 template<
class Space,
class T,
class ... P,
164 typename std::enable_if<
165 ( std::is_same<
typename ViewTraits<
T,P...>::specialize ,
166 Kokkos::Impl::ViewSpecializeSacadoFad >
::value ||
167 std::is_same<
typename ViewTraits<
T,P...>::specialize ,
168 Kokkos::Impl::ViewSpecializeSacadoFadContiguous >
::value ),
169 typename Impl::MirrorType<Space,T,P ...>::view_type>::type
170 create_mirror(Kokkos::Impl::WithoutInitializing_t wi,
171 const Space&,
const Kokkos::View<T,P...> & src);
173 template <
class Space,
class T,
class... P>
174 typename Impl::MirrorViewType<Space,
T, P...>::view_type
175 create_mirror_view_and_copy(
176 const Space&,
const Kokkos::View<T, P...>& src,
177 std::string
const& name =
"",
178 typename std::enable_if<
179 ( std::is_same<
typename ViewTraits<T, P...>::specialize,
180 Kokkos::Impl::ViewSpecializeSacadoFad>::
value ||
181 std::is_same<
typename ViewTraits<T,P...>::specialize ,
182 Kokkos::Impl::ViewSpecializeSacadoFadContiguous >::
value ) &&
183 Impl::MirrorViewType<Space, T, P...>::is_same_memspace>::type* =
186 template <
class Space,
class T,
class... P>
187 typename Impl::MirrorViewType<Space,
T, P...>::view_type
188 create_mirror_view_and_copy(
189 const Space&,
const Kokkos::View<T, P...>& src,
190 std::string
const& name =
"",
191 typename std::enable_if<
192 ( std::is_same<
typename ViewTraits<T, P...>::specialize,
193 Kokkos::Impl::ViewSpecializeSacadoFad>::
value ||
194 std::is_same<
typename ViewTraits<T,P...>::specialize ,
195 Kokkos::Impl::ViewSpecializeSacadoFadContiguous >::
value ) &&
196 !Impl::MirrorViewType<Space, T, P...>::is_same_memspace>::type* =
201 template <
unsigned N,
typename... Args>
202 KOKKOS_FUNCTION std::enable_if_t<
203 N ==
View<Args...>::Rank &&
204 (std::is_same<
typename ViewTraits<Args...>::specialize,
205 Kokkos::Impl::ViewSpecializeSacadoFad>
::value ||
206 std::is_same<
typename ViewTraits<Args...>::specialize,
207 Kokkos::Impl::ViewSpecializeSacadoFadContiguous>
::value),
209 as_view_of_rank_n(View<Args...> v);
213 template <
unsigned N,
typename T,
typename... Args>
215 N !=
View<
T, Args...>::Rank &&
216 (std::is_same<
typename ViewTraits<
T, Args...>::specialize,
217 Kokkos::Impl::ViewSpecializeSacadoFad>
::value ||
218 std::is_same<
typename ViewTraits<
T, Args...>::specialize,
219 Kokkos::Impl::ViewSpecializeSacadoFadContiguous>
::value),
220 View<
typename RankDataType<
typename View<T, Args...>::value_type,
N>::type,
222 as_view_of_rank_n(View<T, Args...>);
228 #endif // defined(HAVE_SACADO_VIEW_SPEC) && !defined(SACADO_DISABLE_FAD_VIEW_SPEC) 230 #endif // defined(HAVE_SACADO_KOKKOSCORE)