假设我有两个函数 fun1() 和 fun2()。我想在英特尔线程构建块上同时运行它们。与在 openmp 中一样,我可以使用 #pragma omp 部分同时运行两个不同的功能。我们如何使用英特尔 TBB 做同样的事情?
问问题
235 次
1 回答
0
对于大多数用途来说,parallel_invoke 是实现此目的的好方法,并使用 TBB 提供的最高级别 API 来实现此目的。在 TBB 中还有其他方法可以使用较低级别的 API 来执行此操作,这可能对您有用。实现此目的的下一个较低级别的 API 方法是创建一个新的 task_group。更进一步,TBB 中最低级别的 API 允许您创建自己的任务树,这可以创建任意并行模式。如果您要走那么远,您需要的关键洞察力是您可以一次创建多个根任务。这在某些文档中并不明显,但是一旦您了解它,您就可以创建您可以想象的任何并行模式。
使用英特尔® 线程构建模块优化游戏架构一文展示了使用此最低级别 API 来实现您描述的目的的示例,以及您可能会发现有用的其他几个示例。
于 2014-02-20T20:48:12.543 回答