inline void dispatch_reduce(InputIterator first, InputIterator last, const buffer_iterator<T> result, const plus<T> &function, command_queue &queue) { reduce_on_gpu(first, last, result, function, queue); }
inline void dispatch_reduce(InputIterator first, InputIterator last, OutputIterator result, const plus<T> &function, command_queue &queue) { const context &context = queue.get_context(); const device &device = queue.get_device(); // reduce to temporary buffer on device array<T, 1> value(context); if(device.type() & device::cpu){ detail::reduce_on_cpu(first, last, value.begin(), function, queue); } else { reduce_on_gpu(first, last, value.begin(), function, queue); } // copy to result iterator copy_n(value.begin(), 1, result, queue); }