【问题标题】:How does execution policy work for sequential traversal algorithms in C++?C++ 中顺序遍历算法的执行策略如何工作?
【发布时间】:2018-03-09 22:38:34
【问题描述】:

C++ 17 将execution policy 添加到许多算法中。

对于像for_each 这样的算法,很容易想象并行化版本的实现是如何工作的:不是从头到尾依次调用提供的函数,而是对范围进行分区并为每个分区并行执行函数。

但是对于暗示顺序遍历到第一次出现的算法,例如find,并行化版本会做什么?

【问题讨论】:

  • 您仍然可以用find 划分范围,然后选择最接近的成功子范围。
  • 我想你会交错分区,然后一旦你找到一个位置,你就必须与其他工人协调,只为较小的位置继续,否则停止。这样,人们会希望通过并行性获得的收益不会因第一次出现之后的额外工作而受到太大影响。但这就是正在发生的事情吗?

标签: c++ algorithm parallel-processing c++17


【解决方案1】:

除了 ExecutionPolicy 允许的一般属性之外,没有指定。

这允许平台根据需要在多种策略之间进行选择,例如配置文件引导优化。

【讨论】:

    猜你喜欢
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    相关资源
    最近更新 更多