我正在尝试重新编写一段串行代码以在并行环境中工作,并且我正在尝试制作一个详细说明其所有进程的图表,以便可以清楚哪些可以并行化。我想知道是否有这样的图表的约定,以及人们是否可以给我一些建议。我对如何展示这些过程如何构成更大的过程(即如何组成函数)感到困惑。我也不确定如何显示循环,特别是独立循环和循环之间的区别,必须连续完成。
答案 0 :(得分:1)
您最需要知道的是数据依赖性。两个代码块之间没有数据依赖关系 - >它们可以并行化。
存在粒度问题:如果我们将数组视为数据流项,那么引用相同数组的两段代码之间几乎总是存在依赖关系;一个通过在数组中对数组进行分区来解决这个问题,这取决于循环如何跨数组进行。对于循环尤其如此。
如何显示这些依赖关系是另一回事。 On可以简单地说,“代码块A读/写数据项P,Q与代码块B冲突写入P并读取Q”。或者,可以绘制显示数据流的图表。 (如果可以将数据流隔离在代码子图上,则可以并行化)。
答案 1 :(得分:-1)
您应该将其重新安排到支持并行处理的体系结构,而不是检查现有代码的行为。看看dataflow architecture。