Function reduce
boost::compute::reduce
Synopsis
template<typename InputIterator, typename OutputIterator,
typename BinaryFunction>
void reduce(InputIterator first, InputIterator last, OutputIterator result,
BinaryFunction function,
command_queue & queue = system::default_queue());
template<typename InputIterator, typename OutputIterator>
void reduce(InputIterator first, InputIterator last, OutputIterator result,
command_queue & queue = system::default_queue());
Description
Возвращает результат применения<function
>к элементам в диапазоне [<first
>,<last
>].
Если функция не указана, используется<plus
>.
Алгоритм<reduce()
>предполагает, что функция бинарного восстановления ассоциативна. При использовании с неассоциативными функциями результат может быть недетерминированным и отличаться точностью. Примечательно, что это влияет на функцию<plus<float>()
>, поскольку сложение с плавающей точкой не является ассоциативным и может давать несколько иные результаты, чем последовательный алгоритм.
Этот алгоритм поддерживает итераторы хоста и устройства для аргумента результата. Это позволяет уменьшить значения и скопировать их на хост с помощью одного вызова функции.
Например, вычислить сумму значений в векторе устройства и скопировать результат на значение на хосте:
Обратите внимание, что хотя алгоритм<reduce()
>концептуально идентичен алгоритму<accumulate()
>, его реализация значительно более эффективна на параллельном оборудовании. Для получения дополнительной информации см. документацию по алгоритму<accumulate()
>.
Смотрите также:
накопить()
Параметры: | first
| Первый элемент входного диапазона | <function > | функция бинарного восстановления | <last > | последний элемент в входном диапазоне | <queue > | командная очередь для выполнения операции | <result > | итератор, указывающий на выход |
|