Ami*_*ory 3 c++ algorithm parallel-processing c++14
用于C++ 14的提议N3554(并行算法库),提出(除其他外),似乎是当前的并行版本std::partial_sum,例如:
template<
    class ExecutionPolicy,
    class InputIterator,
    class OutputIterator,
    class BinaryOperation>
OutputIterator inclusive_scan(
    ExecutionPolicy &&exec,
    InputIterator first,
    InputIterator last,
    OutputIterator result,
    BinaryOperation binary_op);
随着解释
效果:对于[result,result +(last - first))中的每个迭代器,执行*i = prefix_sum,其中prefix_sum是相应的sum init +*iter_0 +*iter_1 +*iter_2 + ...或binary_op的结果(init,binary_op(*iter_0,binary_op(*iter_1,binary_op(*iter_2,...)))对于范围内的每个迭代器iter_j [first,first +(i - result) - 1)...顺序总和的操作数未指定.
如何将此操作并行?看起来,几乎按照定义,每个输出prefix_sum必须计算出下一个要计算的 - 通常导致串行操作.
编辑非常感谢Aasmund Eldhuset的回答.就个人而言,我发现Guy E. Blelloch的"前缀和及其应用"非常有用.