MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
并行算法

并行计算算法 更多...

函数

template<typename Iterator, typename BinaryOperation, typename Result, size_t Threshhold = 10, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0>
void reduce (Iterator first, Iterator last, BinaryOperation op, Result &res)
 并行归约操作
template<typename Iterator, typename UnaryOperation, typename BinaryOp, typename Result, size_t Threshhold = 10, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0>
void transform_reduce (Iterator first, Iterator last, UnaryOperation transform, BinaryOp reduce, Result &res)
 并行变换归约操作

详细描述

并行计算算法

函数说明

◆ reduce()

template<typename Iterator, typename BinaryOperation, typename Result, size_t Threshhold = 10, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0>
void reduce ( Iterator first,
Iterator last,
BinaryOperation op,
Result & res )

并行归约操作

模板参数
Iterator迭代器类型
BinaryOperation二元操作类型
Result结果类型
Threshhold并行阈值,小于等于此值时使用串行算法
参数
first范围的起始迭代器
last范围的结束迭代器
op归约操作的二元函数
res归约结果的引用

使用分治法的并行归约算法。将范围分成两半,分别在不同线程中计算,最后合并结果。 当元素数量小于阈值时,使用串行算法。

在文件 parallel.hpp37 行定义.

引用了 _MSTL, distance(), next(), reduce() , 以及 ref().

被这些函数引用 reduce() , 以及 transform_reduce().

◆ transform_reduce()

template<typename Iterator, typename UnaryOperation, typename BinaryOp, typename Result, size_t Threshhold = 10, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0>
void transform_reduce ( Iterator first,
Iterator last,
UnaryOperation transform,
BinaryOp reduce,
Result & res )

并行变换归约操作

模板参数
Iterator迭代器类型
UnaryOperation一元变换操作类型
BinaryOp二元归约操作类型
Result结果类型
Threshhold并行阈值,小于等于此值时使用串行算法
参数
first范围的起始迭代器
last范围的结束迭代器
transform变换操作的一元函数
reduce归约操作的二元函数
res归约结果的引用

先对每个元素应用变换操作,然后进行归约。使用分治法的并行算法。 当元素数量小于阈值时,使用串行算法。

在文件 parallel.hpp71 行定义.

引用了 _MSTL, distance(), initialize(), next(), reduce(), ref(), transform() , 以及 transform_reduce().

被这些函数引用 transform_reduce().