thrust::reduce
Defined in thrust/reduce.h
-
template<typename DerivedPolicy, typename InputIterator, typename T, typename BinaryFunction>
T thrust::reduce(const thrust::detail::execution_policy_base<DerivedPolicy> &exec, InputIterator first, InputIterator last, T init, BinaryFunction binary_op) reduce
is a generalization of summation: it computes the sum (or some other binary operation) of all the elements in the range[first, last)
. This version ofreduce
usesinit
as the initial value of the reduction andbinary_op
as the binary function used for summation.reduce
is similar to the C++ Standard Template Library’sstd::accumulate
. The primary difference between the two functions is thatstd::accumulate
guarantees the order of summation, whilereduce
requires associativity ofbinary_op
to parallelize the reduction.Note that
reduce
also assumes that the binary reduction operator (in this casebinary_op
) is commutative. If the reduction operator is not commutative thenthrust::reduce
should not be used. Instead, one could useinclusive_scan
(which does not require commutativity) and select the last element of the output array.The algorithm’s execution is parallelized as determined by
exec
.The following code snippet demonstrates how to use
reduce
to compute the maximum value of a sequence of integers using thethrust::host
execution policy for parallelization:#include <thrust/reduce.h> #include <thrust/functional.h> #include <thrust/execution_policy.h> ... int data[6] = {1, 0, 2, 2, 1, 3}; int result = thrust::reduce(thrust::host, data, data + 6, -1, thrust::maximum<int>()); // result == 3
See also
transform_reduce
- Parameters
exec – The execution policy to use for parallelization.
first – The beginning of the input sequence.
last – The end of the input sequence.
init – The initial value.
binary_op – The binary function used to ‘sum’ values.
- Template Parameters
DerivedPolicy – The name of the derived execution policy.
InputIterator – is a model of Input Iterator and
InputIterator's
value_type
is convertible toT
.T – is a model of Assignable, and is convertible to
BinaryFunction's
first_argument_type
andsecond_argument_type
.BinaryFunction – is a model of Binary Function, and
BinaryFunction's
result_type
is convertible toOutputType
.
- Returns
The result of the reduction.