假设我有一个嵌套循环:
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,所以我们不能并行化任何循环。
请澄清。此外,这是什么类型的依赖?
谢谢!
答案 0 :(得分:3)
你是正确的,那里的示例循环不可并行化(或者至少不容易),但这不是因为内部内容依赖于m
和n
(因为它们可以作为传递新线程的参数或其他)。这是因为后来的计算取决于早期计算的结果。例如,result[10][12]
的值取决于result[9][8]
,这取决于result[5][7]
等。