OpenMP寻找循环依赖
1.OpenMP寻找循环依赖
当我们试图使用一个parallel for指令时,首先应该注意的是:要小心发现循环依赖。我们不需要担心一般的数据依赖。例如,在下面循环中:
1 |
|
在第二行和第三行之间有一个数据依赖。然而,如下的并行化没有问题。
1 |
|
因为x[ i ]的计算与它接下来的使用总是被分配给同一个进程。
我们也应该观察到,有依赖关系的语句,其中至少一条语句会有序地写或更新变量。因此为了检测循环依赖,我们只需要重点观察被循环体更新的变量,即我们应该寻找在一个迭代中被读或被写,而在另一个迭代中被写的变量。
2.总结
- 数据依赖在优化过程中非常常见
- 如何解决数据依赖对提升并行化的效果影响很大
3.参考资料
并行程序导论 (美)Peter S.Pacheco
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!