gpt4 book ai didi

c++ - 与 ForwardIterator 的并行性?

转载 作者:太空狗 更新时间:2023-10-29 20:34:43 26 4
gpt4 key购买 nike

我只是在考虑我们是否可以加快提取出现在已排序 std::list<int> 中的不同元素的速度通过运行 parallelized version std::unique_copy() .

我的想法是这样的:

  • 将数据分成几部分。
  • 将算法并行应用于这些部分。
  • 合并结果,同时计算各部分之间的边缘情况。

但正如我所见,只有一个 ForwardIterator 而不是 RandomAccessIterator,至少需要两遍才能并行解决这个问题:一次设置部分,下一次应用算法。

我明白,并不是每个问题都会受益于并行化的优点。

我对它的工作原理的理解是否正确(大约)?

那么我的问题是,为什么并行算法不需要 RandomAccessIterators?在这里支持 ForwardIterator 有好处吗?算法能否检测出它们拥有哪种类型的迭代器,并相应地选择更高效的版本?

最佳答案

并行算法支持前向迭代器的原因是并行化可以提高这些算法的性能。

是的,前向迭代器一次只能在受控序列中移动一步。但是算法不仅仅只是移动——您还必须查看算法所做的其他事情

例如,如果复制一个对象的成本很高,使用前向迭代器的std::copy可以并行地更快,因为复制对象所需的时间决定了遍历时间;吐出并行拷贝提高了整体速度,即使前向迭代器意味着并行算法比串行算法做更多的工作。

关于c++ - 与 ForwardIterator 的并行性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46813513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com