我正在尝试重新编写一段串行代码以在并行环境中工作,并尝试制作一个详细说明其所有过程的图表,以便清楚哪些可以并行化。我想知道这样的图表是否有约定,人们是否可以给我一些关于它们的建议。我对如何展示这些过程如何构成更大的过程(即功能是如何构成的)感到困惑。我也有点不确定如何显示循环,尤其是独立循环和必须串联完成的循环之间的区别。
问问题
65 次
2 回答
1
您最需要知道的是数据依赖关系。两个代码块之间没有数据依赖关系——>它们可以并行化。
存在粒度问题:如果我们将数组视为数据流项,那么引用同一个数组的两段代码之间几乎总是存在依赖关系;一种方法是通过将数组划分为范围来解决这个问题,这取决于循环如何跨过数组。对于循环尤其如此。
这些依赖关系如何显示是另一回事。On 可以简单地说,“代码块 A 读/写数据项 P,Q 与代码块 B 写 P 和读 Q 冲突”。或者,可以绘制显示数据流的图表。(可以通过代码子图隔离数据流,可以并行化)。
于 2013-02-11T23:41:09.653 回答
-1
与其检查现有代码的行为,不如将其重新安排到支持并行处理的架构中。看看数据流架构。
于 2013-02-17T12:04:47.663 回答