...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::transform_reduce
// In header: <boost/compute/algorithm/transform_reduce.hpp> template<typename InputIterator, typename OutputIterator, typename UnaryTransformFunction, typename BinaryReduceFunction> void transform_reduce(InputIterator first, InputIterator last, OutputIterator result, UnaryTransformFunction transform_function, BinaryReduceFunction reduce_function, command_queue & queue = system::default_queue()); template<typename InputIterator1, typename InputIterator2, typename OutputIterator, typename BinaryTransformFunction, typename BinaryReduceFunction> void transform_reduce(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, OutputIterator result, BinaryTransformFunction transform_function, BinaryReduceFunction reduce_function, command_queue & queue = system::default_queue());
Transforms each value in the range [first
, last
) with the unary transform_function
and then reduces each transformed value with reduce_function
.
For example, to calculate the sum of the absolute values of a vector of integers:
Space complexity on GPUs: \Omega(n)
Space complexity on CPUs: \Omega(1)
See Also:
reduce(), inner_product()