parallel_reduce funkce
Vypočítá součet všech prvků v určeném rozsahu vypočtením následné dílčí součty nebo vypočítá výsledek následné částečné výsledky získané podobně pomocí zadané operace binární Sum, paralelně.parallel_reduceje sémanticky podobné std::accumulate, s výjimkou, že vyžaduje být asociativní binární operace a vyžaduje hodnotu identity místo počáteční hodnota.
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 iterační vstupní oblasti._Sym_reduce_fun
Typ funkce symetrické snížení.Typ funkce podpisu musí být _Reduce_type _Sym_fun(_Reduce_type, _Reduce_type), kde _Reduce_type je stejný jako typ identity a typ výsledek snížení.Pro třetí přetížení, to by měla být konzistentní s typem výstupu _Range_reduce_fun._Reduce_type
Typ, vstupní sníží, což může být odlišné od typu vstupní element.Tento typ bude má vrácené hodnoty a hodnoty identity._Range_reduce_fun
Typ funkce snížení rozsahu.Typ funkce podpisu musí být _Reduce_type _Range_fun(_Forward_iterator, _Forward_iterator, _Reduce_type), _Reduce_type je stejný jako typ identity a typ výsledek snížení._Begin
Vstupní iterace adresování první prvek v rozsahu sníží._End
Vstupní iterační adresování prvek, který je o jednu pozici za poslední prvek v rozsahu sníží._Identity
Hodnota identity _Identity je stejného typu jako typ výsledek snížení a také value_type z pro přetížení první a druhé iterace.Pro třetí přetížení musí mít stejný typ jako výsledek typu snížení hodnoty identity, ale může se lišit od value_type z iterace.Musí mít odpovídající hodnotu tak, aby operátor snížení rozsahu _Range_fun, když je použit pro rozsah jeden prvek typu value_type a hodnota identity chová cast typ hodnoty z typu value_type identity typu._Sym_fun
Symetrické funkce použité v druhé snížení.Další informace naleznete v poznámky._Range_fun
Funkce použité v první fázi snížení.Další informace naleznete v poznámky.
Vrácená hodnota
V důsledku snížení.
Poznámky
Chcete-li provádět paralelní snížení funkce rozdělí rozsah bloky na základě počtu pracovníků k dispozici základní Plánovač.Snížení probíhá ve dvou fázích, první fáze provede snížení v rámci každého bloku a druhá fáze provede snížení mezi částečné výsledky z každého bloku.
Vyžaduje přetížení první iteraci value_type, T, být stejná jako hodnota typ identity, jakož i snížení výsledek typu.Typ prvku t musí poskytnout operátor T T::operator + (T) snížit prvky v každém bloku.Ve druhé fázi se používá stejný operátor.
Druhý přetížení také vyžaduje iteraci value_type být stejná jako hodnota typ identity, jakož i snížení výsledek typu.Zadaná binární operátor _Sym_fun se používá v obou fázích snížení, s hodnotou identity jako počáteční hodnotu pro první fázi.
Třetí přetížení hodnotu typ identity musí být stejný jako výsledek typu snížení, ale iteraci value_type mohou být odlišné od obou.Funkce snižování rozsahu _Range_fun se používá v první fázi s hodnotou identity jako počáteční hodnotu a binární funkce _Sym_reduce_fun sub výsledky ve druhé fázi je použita.
Požadavky
Záhlaví: ppl.h
Obor názvů: souběžnosti