Funkcja parallel_reduce
Oblicza sumę wszystkich elementów w zakresie określonym przez computing kolejnych sum częściowych lub oblicza wynik kolejne wyniki częściowe podobnie uzyskanej przy użyciu określonej operacji binarny, innych niż suma, równolegle.parallel_reducesemantycznie podobny do std::accumulate, z wyjątkiem, że wymaga operacji binarny za asocjacyjnych i wymaga wartości tożsamości zamiast wartości początkowe.
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
);
Parametry
_Forward_iterator
Typ iteratora zakres wejściowy._Sym_reduce_fun
Typ funkcji redukcji symetrycznego.Musi to być typ funkcji z podpisem _Reduce_type _Sym_fun(_Reduce_type, _Reduce_type), gdzie _Reduce_type jest taka sama jak typ tożsamości i typ wyniku obniżki.Trzeci przeciążenia, powinny to być zgodne z typem danych wyjściowych z _Range_reduce_fun._Reduce_type
Typ zmniejszenia dane wejściowe, które mogą być różne od typu elementu input.Zwracana wartość i wartości tożsamości będzie ma tego typu._Range_reduce_fun
Typ funkcji zmniejszenie zakresu.Musi to być typ funkcji z podpisem _Reduce_type _Range_fun(_Forward_iterator, _Forward_iterator, _Reduce_type), _Reduce_type jest taki sam, jak typ tożsamości i typ wyniku obniżki._Begin
Wejściowy iterację adresowania pierwszy element w zakresie ulec zmniejszeniu._End
Wejściowy iteratora adresowania element, który jest o jedną pozycję poza ostatnim elementem w zakresie zmniejszana._Identity
Wartość tożsamości _Identity jest tego samego typu, jako wynik typ ograniczenia, a także value_type iteratora dla overloads pierwszego i drugiego.Trzeci przeciążenia, musi mieć ten sam typ jako typ wyniku redukcji wartość tożsamości, ale mogą się różnić od value_type iteratora.Musi mieć odpowiednią wartość takie, że operator zmniejszenie zakresu _Range_fun, gdy jest stosowany do zakresu określonego elementu typu value_type i wartość tożsamości zachowuje się jak obsada typ wartości z typu value_type do typu tożsamości._Sym_fun
Funkcja symetryczny używany w drugim redukcji.Więcej informacji można znaleźć w uwagi._Range_fun
Funkcja, która będzie używana w pierwszej fazie redukcji.Więcej informacji można znaleźć w uwagi.
Wartość zwracana
Wynik redukcji.
Uwagi
Aby wykonywać równolegle redukcji, funkcja dzieli zakres fragmentów, na podstawie liczby pracowników do podstawowego harmonogramu.Zmniejszenie odbywa się w dwóch fazach, pierwsza faza wykonuje redukcji w ramach każdego fragmentu, a drugi etap wykonuje redukcji między częściowe wyniki z każdego fragmentu.
Pierwszy przeciążenie wymaga, aby iteratora value_type, T, być taki sam, jak typ wartości tożsamości, jak również typu wyniku redukcji.Typ elementu t musi dostarczyć operator T T::operator + (T) do zmniejszenia elementów w każdym fragmencie.Ten sam podmiot jest używany na drugim etapie.
Drugi przeciążenie wymaga również, że iteratora value_type być taki sam, jak typ wartości tożsamości, jak również typu wyniku redukcji.Operator dwuargumentowy dostarczony _Sym_fun jest używany w obu fazach zmniejszenie wartości tożsamość jako wartość początkowa dla pierwszej fazy.
Trzeciego przeciążenia, typ wartości tożsamości musi być taka sama jak typu wyniku redukcji, ale iteratora value_type może się różnić od obu.Zakres funkcji redukcji _Range_fun jest używana w pierwszej fazie z wartością tożsamości jako wartość początkowa i binarne funkcji _Sym_reduce_fun jest stosowane do sub wyników w drugim etapie.
Wymagania
Nagłówek: ppl.h
Obszar nazw: współbieżności