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