partition_copy
#
Header: Kokkos_StdAlgorithms.hpp
Description#
Copies from a range or a rank-1 View
the elements that satisfy the predicate pred
to to_first_true
or view_true
, while the others are copied to to_first_false
or view_false
.
Interface#
Warning
This is currently inside the Kokkos::Experimental
namespace.
Overload set accepting execution space#
template <class ExecutionSpace,
class InputIteratorType,
class OutputIteratorTrueType,
class OutputIteratorFalseType,
class PredicateType>
::Kokkos::pair<OutputIteratorTrueType, OutputIteratorFalseType>
partition_copy(const ExecutionSpace& exespace, (1)
InputIteratorType from_first,
InputIteratorType from_last,
OutputIteratorTrueType to_first_true,
OutputIteratorFalseType to_first_false,
PredicateType pred);
template <class ExecutionSpace,
class InputIteratorType,
class OutputIteratorTrueType,
class OutputIteratorFalseType,
class PredicateType>
::Kokkos::pair<OutputIteratorTrueType, OutputIteratorFalseType>
partition_copy(const std::string& label, (2)
const ExecutionSpace& exespace,
InputIteratorType from_first,
InputIteratorType from_last,
OutputIteratorTrueType to_first_true,
OutputIteratorFalseType to_first_false,
PredicateType pred);
template <class ExecutionSpace,
class DataType1, class... Properties1,
class DataType2, class... Properties2,
class DataType3, class... Properties3,
class PredicateType>
auto partition_copy(const ExecutionSpace& exespace, (3)
const ::Kokkos::View<DataType1, Properties1...>& view_from,
const ::Kokkos::View<DataType2, Properties2...>& view_dest_true,
const ::Kokkos::View<DataType3, Properties3...>& view_dest_false,
PredicateType pred);
template <class ExecutionSpace,
class DataType1, class... Properties1,
class DataType2, class... Properties2,
class DataType3, class... Properties3,
class PredicateType>
auto partition_copy(const std::string& label, (4)
const ExecutionSpace& exespace,
const ::Kokkos::View<DataType1, Properties1...>& view_from,
const ::Kokkos::View<DataType2, Properties2...>& view_dest_true,
const ::Kokkos::View<DataType3, Properties3...>& view_dest_false,
PredicateType pred);
Overload set accepting a team handle#
New in version 4.2.
template <class TeamHandleType, class InputIteratorType,
class OutputIteratorTrueType, class OutputIteratorFalseType,
class PredicateType>
KOKKOS_FUNCTION
::Kokkos::pair<OutputIteratorTrueType, OutputIteratorFalseType>
partition_copy(const TeamHandleType& teamHandle, InputIteratorType from_first, (5)
InputIteratorType from_last,
OutputIteratorTrueType to_first_true,
OutputIteratorFalseType to_first_false, PredicateType pred);
template <class TeamHandleType, class DataType1, class... Properties1,
class DataType2, class... Properties2, class DataType3,
class... Properties3, class PredicateType>
KOKKOS_FUNCTION
auto partition_copy(const TeamHandleType& teamHandle, (6)
const ::Kokkos::View<DataType1, Properties1...>& view_from,
const ::Kokkos::View<DataType2, Properties2...>& view_dest_true,
const ::Kokkos::View<DataType3, Properties3...>& view_dest_false,
PredicateType pred);
Parameters and Requirements#
exespace
: execution space instanceteamHandle
: team handle instance given inside a parallel region when using a TeamPolicylabel
: string forwarded to internal parallel kernels for debugging purposes1: The default string is “Kokkos::partition_copy_iterator_api_default”.
3: The default string is “Kokkos::partition_copy_view_api_default”.
NOTE: overloads accepting a team handle do not use a label internally
from_first, from_last
: range of elements to copy frommust be random access iterators, e.g., returned from
Kokkos::Experimental::(c)begin/(c)end
must represent a valid range, i.e.,
last >= first
must be accessible from
exespace
or from the execution space associated with the team handle
to_first_true
: beginning of the range to copy the elements that satisfypred
tomust be random access iterators, e.g., returned from
Kokkos::Experimental::(c)begin/(c)end
must be accessible from
exespace
or from the execution space associated with the team handle
to_first_false
: beginning of the range to copy the elements that do NOT satisfypred
tomust be random access iterators, e.g., returned from
Kokkos::Experimental::(c)begin/(c)end
must be accessible from
exespace
or from the execution space associated with the team handle
view_from
: source view of elements to copy frommust be rank-1, and have
LayoutLeft
,LayoutRight
, orLayoutStride
must be accessible from
exespace
or from the execution space associated with the team handle
view_dest_true
: destination view to copy the elements that satisfypred
to - must be rank-1, and haveLayoutLeft
,LayoutRight
, orLayoutStride
must be accessible from
exespace
or from the execution space associated with the team handle
view_dest_false
: destination view to copy the elements that do NOT satisfypred
tomust be rank-1, and have
LayoutLeft
,LayoutRight
, orLayoutStride
must be accessible from
exespace
or from the execution space associated with the team handle
pred
:unary predicate returning
true
for the required element to replace;pred(v)
must be valid to be called from the execution space passed, and convertible to bool for every argumentv
of type (possible const)value_type
, wherevalue_type
is the value type ofInputIteratorType
(for 1,2) or the value type ofview_from
(for 3,4), and must not modifyv
.must conform to:
struct Predicate { KOKKOS_INLINE_FUNCTION bool operator()(const value_type & v) const { return /* ... */; } // or, also valid KOKKOS_INLINE_FUNCTION bool operator()(value_type v) const { return /* ... */; } };
Return Value#
Returns a Kokkos::pair
containing the iterators to the end of two destination ranges (or views)