使用OpenMP并行化此递归的最佳方法

时间:2016-12-04 17:25:13

标签: c++ c openmp

我有以下递归功能(注意:它被剥夺了所有不重要的细节)

int recursion(...) {

  int minimum = INFINITY;
  for(int i=0; i<C; i++) {
      int foo = recursion(...);

      if (foo < minimum) {
          minimum = foo;
      }
  }

  return minimum;
}

注2:有限,但在此简化示例中没有,所以请忽略它。这个问题的关键是如何正确地解决这个问题。

我正在考虑使用任务,但我不确定,如何正确使用它 - 如何对内部循环进行并列化。

编辑1:递归树不平衡。它正在与动态编程方法一起使用,因此随着时间的推移,许多值将从之前的传递中重复使用。这让我很担心,我认为这将是一个很大的瓶颈。

C大概在20左右。

最好的指标是最快的:)

它将以2x Xeon运行,因此有足够的硬件功能可用。

0 个答案:

没有答案