C++ 具有更多衍生任务的TBB递归链式反应

C++ 具有更多衍生任务的TBB递归链式反应,c++,parallel-processing,tbb,C++,Parallel Processing,Tbb,在TBB(C++)中使用递归链式反应来确定某些值时应该做什么 例如,在计算Fibonacci数时,我们在重载execute()方法中创建了两个子任务:A计算第n-2个数,B计算第n-1个数。在本例中,B被生成,A被设置为生成和等待(这意味着任务A正在等待任务B) 但如果我们,例如,必须确定Tribonaci数;那么我们应该有三个子任务。我的问题是,这三个任务中哪一个应该是spawn_和wait_,以实现最大的并行性 当我们有n子任务时,这个问题也可以应用。有关暂停与贪婪任务调度的背景信息,请参阅

在TBB(C++)中使用递归链式反应来确定某些值时应该做什么

例如,在计算Fibonacci数时,我们在重载execute()方法中创建了两个子任务:A计算第n-2个数,B计算第n-1个数。在本例中,B被生成,A被设置为生成和等待(这意味着任务A正在等待任务B)

但如果我们,例如,必须确定Tribonaci数;那么我们应该有三个子任务。我的问题是,这三个任务中哪一个应该是spawn_和wait_,以实现最大的并行性


当我们有n子任务时,这个问题也可以应用。

有关暂停与贪婪任务调度的背景信息,请参阅。在贪婪调度程序(例如Cilk)的情况下,并行度不取决于最后发出的子任务。对于暂停调度程序,计划暂停会降低并行性。最小化暂停数量的一种启发式方法是使用最大的子任务来生成和等待所有暂停。这样做有助于最大限度地减少父线程耗尽工作并不得不从其他地方窃取的机会,如果其他子任务在父线程完成窃取的任务之前完成,则可能会导致暂停。

非常感谢!有益的