创建图形以显示串行代码中的依赖关系,从而显示如何使其并行



我正在尝试重新编写一段串行代码,以便在并行环境中工作,并试图制作一个详细说明其所有过程的图表,以便清楚哪些过程可以并行。我想知道这样的图表是否有惯例,人们是否可以给我一些建议。我特别困惑于如何展示这些过程是如何组成更大的过程的(即函数是如何组成的)。我也有点不确定如何显示循环,尤其是独立循环和必须串联的循环之间的区别。

您最需要了解的是数据依赖关系。两个代码块之间没有数据依赖关系-->它们可以并行化。

有一个粒度问题:如果我们将数组视为数据流项,那么引用同一数组的两段代码之间几乎总是存在依赖关系;通过将数组划分在由循环如何跨数组步进决定的范围中,可以解决这个问题。循环尤其如此。

如何显示这些依赖关系是另一回事。可以简单地说,"代码块A读/写数据项P,Q与代码块B写P和读Q冲突"。或者,可以绘制一张显示数据流的图表。(如果可以在代码的子图上隔离数据流,则可以并行化)。

与其检查现有代码的行为,不如将其重新安排为支持并行单元格处理的体系结构。看看数据流体系结构。

最新更新