parallel_reduce işlevi
Art arda gelen kısmi toplamlar computing tarafından belirtilen aralıktaki tüm öğeler toplamı hesaplar veya art arda kısmi sonuçlar benzer paralel olarak belirtilen bir ikili işlem dışında TOPLA kullanımından elde edilen sonucu hesaplar. parallel_reduceanlam olarak benzer std::accumulate, ikili işlem ilişkilendirilebilir olmasını gerektiriyor ve bir başlangıç değeri yerine bir kimlik değeri gerektirir.
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
);
Parametreler
_Forward_iterator
Giriş aralığı Yineleyici türü._Sym_reduce_fun
Simetrik azaltma işlevi türü. Bu imza ile işlev türü olmalıdır _Reduce_type _Sym_fun(_Reduce_type, _Reduce_type), _Reduce_type aynı kimlik türü ve azaltma sonuç türü. Üçüncü aşırı yüklemek için bu çıkış türüyle tutarlı olmalıdır _Range_reduce_fun._Reduce_type
Giriş öğe türünden farklı olabilen giriş için azaltan türü. Dönüş değeri ve kimlik değeri bu tür vardır._Range_reduce_fun
Aralık azaltma işlevi türü. Bu imza ile işlev türü olmalıdır _Reduce_type _Range_fun(_Forward_iterator, _Forward_iterator, _Reduce_type), _Reduce_type ise aynı kimlik türü ve azaltma sonuç türü._Begin
Azaltılması için aralıktaki ilk öğe adresleme bir giriş Yineleyici._End
Bir giriş Yineleyici getirilmesini aralıktaki son öğenin dışında bir konum öğesi adresleme._Identity
Kimlik değeri _Identity azaltma sonuç türü ile aynı türden olduğu ve ayrıca value_type , birinci ve ikinci aşırı Yineleyici. Üçüncü aşırı kimlik değerini azaltma sonuç türü ile aynı türde olmalıdır, ancak farklı value_type , Yineleyici. Uygun bir değer olmalıdır gibi aralık azaltma işleci _Range_fun, tek bir öğe türü bir dizi uygulandığında value_type ve kimlik değeri davranan türünden değer türü cast gibi value_type kimlik türü._Sym_fun
Azaltma saniye içinde kullanılan simetrik işlevi. Daha fazla bilgi için açıklamalar için bkz._Range_fun
Azaltma ilk aşamasında kullanılan işlev. Daha fazla bilgi için açıklamalar için bkz.
Dönüş Değeri
Azaltma sonucu.
Notlar
Paralel azaltma gerçekleştirmek için işlev aralığı parçalar çalışanlarına temel Zamanlayıcı için kullanılabilir sayısına dayalı olarak böler. Azaltma iki aşamada gerçekleşir, Birinci aşama azaltma her öbek içinde yapar ve ikinci aşama azaltma her öbek kısmi sonuçları arasında gerçekleştirir.
İlk aşırı gerektiren Yineleyici 's value_type, T, aynı azaltma sonuç türünün yanı sıra, kimlik değeri türü. Öğe türü t operatörü sağlamanız gerekir T T::operator + (T) her Yığında öğe sayısını azaltmaktır. İkinci aşamada, aynı işleci kullanılır.
İkinci aşırı de gerektiren Yineleyici 's value_type azaltma sonuç türünün yanı sıra, kimlik değeri türü aynı olmalıdır. Sağlanan ikili işleç _Sym_fun hem azaltma aşamalarını kimlik değeri ilk aşama için başlangıç değeri olarak kullanılır.
Üçüncü aşırı yüklemek için kimlik değeri türü aynı azaltma sonuç türü, ancak Yineleyici'nın olmalıdır value_type her ikisini de farklı olabilir. Aralık azaltma işlevini _Range_fun Birinci aşama kimlik değeri ile ilk değer ve ikili işlevi kullanılan _Sym_reduce_fun ikinci aşama sonuçları sub uygulanır.
Gereksinimler
Başlık: ppl.h
Namespace: eşzamanlılık