gpt4 book ai didi

c++ - 哪个线程并行接口(interface)用于使用堆栈进行任务共享和拆分?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:57:07 26 4
gpt4 key购买 nike

我打算编写一个代码,我想使用可以拆分的任务来共享工作。在串行版本中,我使用用根任务初始化的堆栈。通过重复弹出任务来清空堆栈,然后执行或拆分任务并将子任务推回堆栈。并行实现它的最佳(最有效和最轻松)方式和接口(interface)(tbb、openmp 等)是什么?是否有任何线程并行接口(interface)明确支持像这样的并行堆栈(或者是否有更好的堆栈替代方案)?

最佳答案

您实际上描述的是工作窃取队列。这从 Cilk 编程语言 (http://en.wikipedia.org/wiki/Cilk) 开始,并继续使用作为英特尔编译器一部分的 Cilk++。您可以获得 Linux 的免费评估版。

英特尔 TBB 还具有工作窃取队列并支持自动拆分任务,如果您想自己拆分任务,还可以进行额外控制。 OpenMP 没有这种控制,但我认为这不是不可能的。

还有来自 Sandia (https://code.google.com/p/qthreads/) 的 qthreads,这是一个不错的包,允许您拥有 M:N 调度程序(N 操作系统线程上的 M 用户级线程)。

关于c++ - 哪个线程并行接口(interface)用于使用堆栈进行任务共享和拆分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8240994/

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