c – 与ForwardIterator并行?

weixin_38128682 2019-09-12 02:02:28
我只是在想我们是否可以加速提取出现在排序的std :: list< int>中的不同元素.通过运行parallelized version的parallelized version. 我对这如何运作的概念是这样的: >按部分拆分数据.>将算法并行应用于这些部分.>合并结果,同时计算各部分之间的边缘情况. 但正如我所看到的那样,只有一个ForwardIterator而不是RandomAccessIterator,需要至少两次传递来并行解决这个问题:一次传递来设置这些部分,下一次传递应用算法. 我理解,并非每个问题都会受益于并行化的优点. 我的概念是如何正确的(大约)? 那么我的问题是,为什么并行算法不需要RandomAccessIterators?在这里支持ForwardIterator是否有益?算法能否检测到它们具有哪种类型的迭代器,并相应地选择更高效的版本?
...全文
38 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38132911 2019-09-12
  • 打赏
  • 举报
回复
并行算法支持前向迭代器的原因是并行化可以提高这些算法的性能. 是的,前向迭代器只能通过受控序列一次移动一步.但是算法不仅仅是移动 – 你还必须看看算法所做的其他事情. 例如,如果复制对象很昂贵,那么带有正向迭代器的std :: copy可以更快并行,因为复制对象所需的时间占据了遍历时间;吐出并行副本可以提高整体速度,即使前向迭代器意味着并行算法比串行算法做更多的工作.

430

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧