【发布时间】:2016-12-04 17:25:13
【问题描述】:
我有以下递归函数(注意:它被剥夺了所有不重要的细节)
int recursion(...) {
int minimum = INFINITY;
for(int i=0; i<C; i++) {
int foo = recursion(...);
if (foo < minimum) {
minimum = foo;
}
}
return minimum;
}
注意2:它是有限,但在这个简化的例子中没有,所以请忽略它。这个问题的重点是如何正确地解决这个问题。
我在考虑使用tasks,但我不确定如何正确使用它——如何并行化内部循环。
编辑 1: 递归树不平衡。它与动态编程方法一起使用,因此随着时间的推移,许多值从以前的通道中重新使用。这让我很担心,我认为这将是一个很大的瓶颈。
C 大约是 20。
最好的指标是最快的:)
它将在 2x Xeon 上运行,因此有大量可用的硬件电源。
【问题讨论】:
-
1) 您的工作负载/递归树的平衡程度如何?
C有多大 2) 你的“最佳”指标是什么? 3) 你设想它在什么规模的系统上运行?