循环依赖

时间:2010-12-15 00:50:56

标签: c parallel-processing

假设我有一个嵌套循环:

for(m=0;m<10;m++)
   for(n=0;n<10;n++)
      result[n][m]=result[m-3][n-2]
                   +result[n+1];

我们会调用两个可并行化的循环中的任何一个吗?我的理解是依赖于两个变量n和m,所以我们不能并行化任何循环。

请澄清。此外,这是什么类型的依赖?

谢谢!

1 个答案:

答案 0 :(得分:3)

你是正确的,那里的示例循环不可并行化(或者至少不容易),但这不是因为内部内容依赖于mn(因为它们可以作为传递新线程的参数或其他)。这是因为后来的计算取决于早期计算的结果。例如,result[10][12]的值取决于result[9][8],这取决于result[5][7]等。