21 #ifndef __baseAlgorithms_hpp__
22 #define __baseAlgorithms_hpp__
59 template<
typename T,
typename... properties>
63 T minValue = largestPositive<T>();
65 auto RP = Kokkos::RangePolicy<
66 Kokkos::IndexType<size_t>,
67 typename ViewType1D<T, properties...>::execution_space>(start, end);
69 Kokkos::parallel_reduce(
73 valueToUpdate =
min(view[i], valueToUpdate);
75 Kokkos ::Min<T>(minValue)
80 template<
typename T,
typename... properties>
84 T maxValue = largestNegative<T>();
86 auto RP = Kokkos::RangePolicy<
87 Kokkos::IndexType<size_t>,
88 typename ViewType1D<T, properties...>::execution_space>(start, end);
90 Kokkos::parallel_reduce(
94 valueToUpdate =
max(view[i], valueToUpdate);
96 Kokkos::Max<T>(maxValue)
101 template<
typename T,
typename... properties>
105 T minValue = largestPositive<T>();
106 for (label i = start; i < end; ++i)
108 minValue =
min(minValue, view[i]);
113 template<
typename T,
typename... properties>
117 T maxValue = largestNegative<T>();
118 for (label i = start; i < end; ++i)
120 maxValue =
max(maxValue, view[i]);
125 template<
typename UnaryFunction,
typename T,
typename... properties>
134 auto RP = Kokkos::RangePolicy<
135 Kokkos::IndexType<size_t>,
136 typename ViewType1D<T, properties...>::execution_space>(start, end);
138 Kokkos::parallel_for(
139 "baseAlgorithms-for_each", RP,
LAMBDA_HD(label i) { view[i] = func(i); }
143 template<
typename T,
typename... properties>
151 for (
auto i = 0; i < selected.size(); ++i)
153 view[selected[i]] = val;
157 template<
typename T,
typename... properties>
165 for (
auto i = 0; i < selected.size(); ++i)
167 view[selected[i]] =
static_cast<const T&
>(vals[i]);
171 template<
typename T,
typename... properties>
179 auto RP = Kokkos::RangePolicy<
180 Kokkos::IndexType<size_t>,
181 typename ViewType1D<T, properties...>::execution_space>(
185 Kokkos::parallel_for(
186 "baseAlgorithms-insertSetElementD",
188 LAMBDA_D(
size_t i) { view[selected[i]] = val; }
192 template<
typename T,
typename... properties>
200 auto RP = Kokkos::RangePolicy<
201 Kokkos::IndexType<size_t>,
202 typename ViewType1D<T, properties...>::execution_space>(
206 Kokkos::parallel_for(
207 "baseAlgorithms-insertSetElementD",
209 LAMBDA_D(
size_t i) { view[selected[i]] = vals[i]; }
213 template<
typename T,
typename... properties>
223 auto subV = Kokkos::subview(view, range1, range2, range3);
224 Kokkos::deep_copy(subV, val);
229 #endif // __VectorSingleMath_hpp__