thrust::reduce
Defined in thrust/reduce.h
- 
template<typename InputIterator, typename T, typename BinaryFunction>
 T thrust::reduce(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 following code snippet demonstrates how to use - reduceto compute the maximum value of a sequence of integers.- #include <thrust/reduce.h> #include <thrust/functional.h> ... int data[6] = {1, 0, 2, 2, 1, 3}; int result = thrust::reduce(data, data + 6, -1, thrust::maximum<int>()); // result == 3 - See also - transform_reduce - Parameters
- 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
- 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.