Parallel processing 垂直和水平平行

Parallel processing 垂直和水平平行,parallel-processing,openmp,mpi,Parallel Processing,Openmp,Mpi,最近在并行领域工作,我知道有两个术语“垂直并行”和“水平并行”。有些人说openmp(共享内存并行)是垂直的,而mpi(分布式内存并行)是水平的。为什么这些术语如此称呼?我不明白原因。这仅仅是术语吗?这些术语似乎没有被广泛使用,可能是因为一个过程或系统经常不加区别地同时使用这两个术语。这些概念非常通用,涵盖的范围远不止MPI或openmp领域 垂直并行是一个系统同时使用多个不同设备的能力。例如,一个程序可能有一个线程执行繁重的计算,而另一个线程处理DB查询,第三个线程执行IO。大多数操作系统自然

最近在并行领域工作,我知道有两个术语“垂直并行”和“水平并行”。有些人说openmp(共享内存并行)是垂直的,而mpi(分布式内存并行)是水平的。为什么这些术语如此称呼?我不明白原因。这仅仅是术语吗?

这些术语似乎没有被广泛使用,可能是因为一个过程或系统经常不加区别地同时使用这两个术语。这些概念非常通用,涵盖的范围远不止MPI或openmp领域

垂直并行是一个系统同时使用多个不同设备的能力。例如,一个程序可能有一个线程执行繁重的计算,而另一个线程处理DB查询,第三个线程执行IO。大多数操作系统自然地暴露了这种能力

当使用单个设备或对多个类似的数据项执行操作时,会发生水平并行。例如,当在同一段代码上运行多个线程,但数据不同时,就会发生这种并行性

在软件世界中,一个有趣的例子实际上是map reduce算法,它使用了以下两种方法:

  • 水平并行发生在映射阶段,当数据被分割并分散到多个cpu进行处理时

  • 垂直并行发生在map和reduce阶段之间,数据首先被划分成块,然后由map线程处理,并由reduce线程累积

类似地,在硬件世界中,超标量流水线CPU确实使用这两种变体,其中流水线是垂直并行化的一个特殊实例(与map/reduce staging类似,但还有几个步骤)


使用此术语的原因可能与供应链使用此术语的原因相同:价值是通过链接不同的步骤或处理级别而产生的。最终产品可以被视为抽象结构树(从下到上)或依赖关系树(从上到下)的根,其中每个节点都是中间级别或步骤的结果。你可以很容易地在这里看到供应链和计算之间的类比。

我做这类事情已经有一段时间了,在我的生活中从来没有听过这些术语,我甚至猜不出它们在这里意味着什么。我听说过这些术语,但我只看到它们用于处理器。当同时执行多个独立操作时(例如,在处理器中,当多个功能单元并行运行时)会发生水平并行。垂直并行是指当一系列操作的不同阶段重叠时(例如,在使用流水线的处理器中);例如,ILP或流水线,而不是“垂直并行”作为一个总括术语。但按照这个标准,OMP、MPI、GPGPU的内容基本上都是水平的,是吗?(哦,把你的评论作为一个答案,这样我就可以投票了;无论如何,我学到了一些东西…)谢谢盖伊。。。我可能听错了这些术语……
评论似乎很完美。。。垂直平行度应为ilp级。。水平方向应该是这些技术…:)给出了一个快速的答案,但实际上这个问题属于程序员。