Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parallel processing 创建图形以显示串行代码中的依赖项,以显示如何使其并行_Parallel Processing - Fatal编程技术网

Parallel processing 创建图形以显示串行代码中的依赖项,以显示如何使其并行

Parallel processing 创建图形以显示串行代码中的依赖项,以显示如何使其并行,parallel-processing,Parallel Processing,我正试图重新编写一段串行代码,以便在并行环境中工作,并试图制作一个图表,详细说明其所有进程,以便能够清楚地知道哪些进程可以并行。我想知道是否有一个这样的图表公约,如果人们可以给我一些建议。我对如何显示这些过程如何构成更大的过程(即函数如何构成)感到困惑。我也有点不确定如何显示循环,特别是独立循环和必须串联的循环之间的区别。您最需要知道的是数据依赖关系。两个代码块之间没有数据依赖关系-->它们可以并行化 存在一个粒度问题:如果我们将数组视为数据流项,那么引用同一数组的两段代码之间几乎总是存在依赖关

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

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

存在一个粒度问题:如果我们将数组视为数据流项,那么引用同一数组的两段代码之间几乎总是存在依赖关系;解决这个问题的方法是,根据循环在数组中的步进方式,将数组划分为多个范围。这对于循环尤其如此


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

不要检查现有代码的行为,而应该将其重新安排到支持并行处理的体系结构中。看看。

你的答案相当于“从头重写你的程序,使之并行”。要做到这一点,实际上他必须首先解决第一个问题:它的哪些部分可以并行,因此这是完全非结构化的建议。为数据流架构重写某些内容并不意味着应该从头重写。例程应重写为组件使用者端口触发的进程。它们将是比子例程或类方法更独立的例程。