minmax_element
¶
Header: <Kokkos_StdAlgorithms.hpp>
Finds the smallest and largest elements in a range or in a rank-1 View
using either operator<
to compare two elements or a user-provided comparison operator.
Warning
This is currently inside the Kokkos::Experimental
namespace.
template <class ExecutionSpace, class IteratorType> auto minmax_element(const ExecutionSpace& exespace, (1) IteratorType first, IteratorType last); template <class ExecutionSpace, class IteratorType> auto minmax_element(const std::string& label, (2) const ExecutionSpace& exespace, IteratorType first, IteratorType last); template <class ExecutionSpace, class IteratorType, class ComparatorType> auto minmax_element(const ExecutionSpace& exespace, (3) IteratorType first, IteratorType last, ComparatorType comp); template <class ExecutionSpace, class IteratorType, class ComparatorType> auto minmax_element(const std::string& label, (4) const ExecutionSpace& exespace, IteratorType first, IteratorType last, ComparatorType comp); template <class ExecutionSpace, class DataType, class... Properties> auto minmax_element(const ExecutionSpace& exespace, (5) const ::Kokkos::View<DataType, Properties...>& view); template <class ExecutionSpace, class DataType, class... Properties> auto minmax_element(const std::string& label, (6) const ExecutionSpace& exespace, const ::Kokkos::View<DataType, Properties...>& view); template <class ExecutionSpace, class DataType, class ComparatorType, class... Properties> auto minmax_element(const ExecutionSpace& exespace, (7) const ::Kokkos::View<DataType, Properties...>& view, ComparatorType comp); template <class ExecutionSpace, class DataType, class ComparatorType, class... Properties> auto minmax_element(const std::string& label, (8) const ExecutionSpace& exespace, const ::Kokkos::View<DataType, Properties...>& view, ComparatorType comp);Overload set accepting a team handle¶
Added in version 4.2.
template <class TeamHandleType, class IteratorType> KOKKOS_FUNCTION auto minmax_element(const TeamHandleType& teamHandle, (9) IteratorType first, IteratorType last); template <class TeamHandleType, class IteratorType, class ComparatorType> KOKKOS_FUNCTION auto minmax_element(const TeamHandleType& teamHandle, (10) IteratorType first, IteratorType last, ComparatorType comp); template <class TeamHandleType, class DataType, class... Properties> KOKKOS_FUNCTION auto minmax_element(const TeamHandleType& teamHandle, (11) const ::Kokkos::View<DataType, Properties...>& view); template <class TeamHandleType, class DataType, class ComparatorType, class... Properties> KOKKOS_FUNCTION auto minmax_element(const TeamHandleType& teamHandle, (12) const ::Kokkos::View<DataType, Properties...>& view, ComparatorType comp);Parameters and Requirements¶
exespace
, first
, last
, view
, comp
: same as in min_element
teamHandle
: team handle instance given inside a parallel region when using a TeamPolicy
label
: string forwarded to internal parallel kernels for debugging purposes
1 and 3: The default string is “Kokkos::minmax_element_iterator_api_default”.
5 and 7: The default string is “Kokkos::minmax_element_view_api_default”.
NOTE: overloads accepting a team handle do not use a label internally
A Kokkos pair of iterators to the smallest and largest elements in that order.
The following special cases apply:
if the range [first, last)
is empty it returns Kokkos::pair(first, first)
.
if view
is empty, it returns Kokkos::pair(Kokkos::Experimental::begin(view), Kokkos::Experimental::begin(view))
.
if several elements are equivalent to the smallest element, the iterator to the first such element is returned.
if several elements are equivalent to the largest element, the iterator to the last such element is returned.
namespace KE = Kokkos::Experimental; Kokkos::View<double*> a("a", 11); auto itPair = KE::minmax_element(Kokkos::DefaultExecutionSpace(), KE::begin(a), KE::end(a)); // passing the view directly auto itPair = KE::minmax_element(Kokkos::DefaultExecutionSpace(), a); // using a custom comparator template <class ValueType1, class ValueType2 = ValueType1> struct CustomLessThanComparator { KOKKOS_INLINE_FUNCTION bool operator()(const ValueType1& a, const ValueType2& b) const { // here we use < but one can put any custom logic to return true if a is less than b return a < b; } KOKKOS_INLINE_FUNCTION CustomLessThanComparator() {} }; // passing the view directly auto res = KE::minmax_element(Kokkos::DefaultExecutionSpace(), a, CustomLessThanComparator<double>());
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4