thrust::reduce
Defined in thrust/reduce.h
- 
template<typename DerivedPolicy, typename InputIterator, typename T>
 T thrust::reduce(const thrust::detail::execution_policy_base<DerivedPolicy> &exec, InputIterator first, InputIterator last, T init)
- 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.- 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 the binary operation to parallelize the reduction.- Note that - reducealso assumes that the binary reduction operator (in this case operator+) 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 sum of a sequence of integers including an initialization value using the- thrust::hostexecution policy for parallelization:- #include <thrust/reduce.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); // result == 10 - 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. 
 
- Template Parameters
- DerivedPolicy – The name of the derived execution policy. 
- InputIterator – is a model of Input Iterator and if - xand- yare objects of- InputIterator's- value_type, then- x + yis defined and is convertible to- T.
- T – is convertible to - InputIterator's- value_type.
 
- Returns
- The result of the reduction.