21 #ifndef __baseAlgorithms_hpp__
22 #define __baseAlgorithms_hpp__
61 template<
typename T,
typename... properties>
66 T minValue = largestPositive<T>();
68 auto RP = Kokkos::RangePolicy<
69 Kokkos::IndexType<size_t>,
70 typename ViewType1D<T, properties...>::execution_space >(start, end);
72 Kokkos::parallel_reduce(
"baseAlgorithms-min",
75 valueToUpdate =
min(view[i],valueToUpdate);
77 Kokkos :: Min < T >( minValue )
82 template<
typename T,
typename... properties>
87 T maxValue = largestNegative<T>();
89 auto RP = Kokkos::RangePolicy<
90 Kokkos::IndexType<size_t>,
91 typename ViewType1D<T, properties...>::execution_space >(start, end);
93 Kokkos::parallel_reduce(
"baseAlgorithms-max",
96 valueToUpdate =
max(view[i],valueToUpdate);
98 Kokkos::Max<T>( maxValue )
103 template<
typename T,
typename... properties>
107 T minValue = largestPositive<T>();
108 for(
label i=start; i<end; ++i)
110 minValue =
min(minValue, view[i]);
115 template<
typename T,
typename... properties>
119 T maxValue = largestNegative<T>();
120 for(
label i=start; i<end; ++i)
122 maxValue =
max(maxValue, view[i]);
128 template<
typename UnaryFunction,
typename T,
typename... properties>
131 auto RP = Kokkos::RangePolicy<
132 Kokkos::IndexType<size_t>,
133 typename ViewType1D<T, properties...>::execution_space >(start, end);
135 Kokkos::parallel_for(
"baseAlgorithms-for_each",
144 template<
typename T,
typename... properties>
153 for(
auto i=0; i<selected.size();++i)
155 view[selected[i]] = val;
161 template<
typename T,
typename... properties>
170 for(
auto i=0; i<selected.size(); ++i)
172 view[selected[i]] =
static_cast<const T&
>(vals[i]);
176 template<
typename T,
typename... properties>
184 auto RP = Kokkos::RangePolicy<
185 Kokkos::IndexType<size_t>,
186 typename ViewType1D<T, properties...>::execution_space >(0, selected.size());
188 Kokkos::parallel_for(
189 "baseAlgorithms-insertSetElementD",
192 view[selected[i]] = val; } );
196 template<
typename T,
typename... properties>
204 auto RP = Kokkos::RangePolicy<
205 Kokkos::IndexType<size_t>,
206 typename ViewType1D<T, properties...>::execution_space >(0, selected.size());
208 Kokkos::parallel_for(
209 "baseAlgorithms-insertSetElementD",
212 view[selected[i]] = vals[i]; } );
229 template<
typename T,
typename... properties>
239 auto subV = Kokkos::subview(view, range1, range2, range3);
240 Kokkos::deep_copy(subV, val);
246 #endif // __VectorSingleMath_hpp__