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)
- reduceis a generalization of summation: it computes the sum (or some other binary operation) of all the elements in the range- [first, last). This version of- reduceuses- initas the initial value of the reduction and- binary_opas the binary function used for summation.- reduceis similar to the C++ Standard Template Library’s- std::accumulate. The primary difference between the two functions is that- std::accumulateguarantees the order of summation, while- reducerequires associativity of- binary_opto parallelize the reduction.- Note that - reducealso assumes that the binary reduction operator (in this case- binary_op) is commutative. If the reduction operator is not commutative then- thrust::reduceshould not be used. Instead, one could use- inclusive_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 - reduceto compute the maximum value of a sequence of integers using the- thrust::hostexecution 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_typeis convertible to- T.
- T – is a model of Assignable, and is convertible to - BinaryFunction'sfirst and second argument type.
- BinaryFunction – The function’s return type must be convertible to - OutputType.
 
- Returns
- The result of the reduction.