...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::compute::exclusive_scan
// In header: <boost/compute/algorithm/exclusive_scan.hpp> template<typename InputIterator, typename OutputIterator, typename T, typename BinaryOperator> OutputIterator exclusive_scan(InputIterator first, InputIterator last, OutputIterator result, T init, BinaryOperator binary_op, command_queue & queue = system::default_queue()); template<typename InputIterator, typename OutputIterator, typename T> OutputIterator exclusive_scan(InputIterator first, InputIterator last, OutputIterator result, T init, command_queue & queue = system::default_queue()); template<typename InputIterator, typename OutputIterator> OutputIterator exclusive_scan(InputIterator first, InputIterator last, OutputIterator result, command_queue & queue = system::default_queue());
Performs an exclusive scan of the elements in the range [first
, last
) and stores the results in the range beginning at result
.
Each element in the output is assigned to the sum of all the previous values in the input.
The default operation is to add the elements up.
But different associative operation can be specified as binary_op
instead (e.g., multiplication, maximum, minimum). Also value used to initialized the scan sequence can be specified.
Space complexity on GPUs: \Omega(n)
Space complexity on GPUs when first
== result:
\Omega(2n)
Space complexity on CPUs: \Omega(1)
See Also:
inclusive_scan()
Parameters: 


Returns: 
