Функция parallel_reduce
Вычисляет сумму всех элементов в указанном диапазоне, вычисление суммы или последовательные частично вычисляет результат последовательных частично результатов аналогично, полученных от использования указанной бинарной операции, кроме суммы, параллельно.parallel_reduce семантически аналогично std::accumulate, за исключением того, что требует бинарная операция будет ассоциативно и требует значения идентификаторов вместо начального значения.
template<
typename _Forward_iterator
>
inline typename std::iterator_traits<_Forward_iterator>::value_type parallel_reduce(
_Forward_iterator_Begin,
_Forward_iterator_End,
const typename std::iterator_traits<_Forward_iterator>::value_type &_Identity
);
template<
typename _Forward_iterator,
typename _Sym_reduce_fun
>
inline typename std::iterator_traits<_Forward_iterator>::value_type parallel_reduce(
_Forward_iterator_Begin,
_Forward_iterator_End,
const typename std::iterator_traits<_Forward_iterator>::value_type &_Identity,
_Sym_reduce_fun_Sym_fun
);
template<
typename _Reduce_type,
typename _Forward_iterator,
typename _Range_reduce_fun,
typename _Sym_reduce_fun
>
inline _Reduce_type parallel_reduce(
_Forward_iterator_Begin,
_Forward_iterator_End,
const _Reduce_type& _Identity,
const _Range_reduce_fun &_Range_fun,
const _Sym_reduce_fun &_Sym_fun
);
Параметры
_Forward_iterator
Тип итератора диапазона ввода._Sym_reduce_fun
Тип симметричной функции сокращения.Это должен быть типом функции с сигнатурой _Reduce_type _Sym_fun(_Reduce_type, _Reduce_type), где _Reduce_type совпадает с типом идентификатора и тип результата сокращения.Для третьей перегрузки, это должно быть согласовано с типом выходных данных _Range_reduce_fun._Reduce_type
Тип, который входные данные снизит, который может отличаться от типа элемента ввода.Возвращаемое значение и значения идентификатора будут имеют этот тип._Range_reduce_fun
Тип функции уменьшить расстояния.Это должен быть типом функции с сигнатурой _Reduce_type _Range_fun(_Forward_iterator, _Forward_iterator, _Reduce_type), _Reduce_type совпадает с типом идентификатора и тип результата сокращения._Begin
Итератор ввода адресацию первого элемента в диапазоне, который необходимо уменьшить._End
Итератор ввода адресацию элемент, позиция за одну final элементом в диапазоне быть уменьшенным._Identity
Значение идентификатора _Identity того же типа, что тип результата уменьшить, а также value_type итератора для первого и второго перегрузок.Для третьей перегрузки, значение идентификаторов должны иметь один и тот же тип, что и тип результата сократить, но может отличаться от value_type итератора.Оно должно иметь соответствующее значение те, что оператор _Range_fun уменьшить расстояния, примененный к диапазону одного элемента типа value_type и значения идентификаторов, ведет себя как приведение типов значений от типа value_type к типу идентификатора._Sym_fun
Симметрическая функция, которая будет использоваться во втором из сокращения.Дополнительные сведения см. в разделе " примечания "._Range_fun
Функция, которая будет использоваться в первом этапе сокращения.Дополнительные сведения см. в разделе " примечания ".
Возвращаемое значение
Результат сокращения.
Заметки
Для выполнения параллельного уменьшение, функция сортирует диапазон на блоки, основанные на количестве рабочих доступных в базовом планировщику.Снижение происходит в шагах 2 первый этап выполняет сокращение в каждом блоке, а второй этап выполняет сокращение от частично результаты из каждого блока.
Первый перегруженный метод требует value_type итератора, T, такие же, как тип значения идентификаторов, так же как результат уменьшения типа.Тип t элементов должно предоставить оператор T T::operator + (T) для уменьшения количества элементов в каждом блоке.Оператор используется один и тот же во втором шаге.
Вторая перегрузка также требует, чтобы value_type итератора совпадает с типом значения идентификаторов, так же как результат уменьшения типа.Предоставленный аргумент бинарный оператор _Sym_fun используется в обоих этапах уменьшить, значение идентификаторов, как начальное значение на первый этап.
Для третьей перегрузки, тип значения идентификаторов должен быть тем же, что и тип результата сократить, но value_type может отличаться от оба итератора.Функция _Range_fun уменьшения диапазона используется в первом этапе со значением идентификатора в качестве начального значения и _Sym_reduce_fun бинарная функция применяется для вложенных результатов во втором шаге.
Требования
Заголовок: ppl.h
Параллелизм пространство имен: