最近在并行领域工作,我知道有两个术语“垂直并行”和“水平并行”。有人说openmp (共享内存并行)是垂直的,mpi (分布式内存并行)是水平并行。为什么这些术语被称为是这样的?我不明白原因。这么称呼他们仅仅是术语吗?
发布于 2013-03-08 21:44:46
这些术语似乎没有被广泛使用,也许是因为一个进程或系统经常不加区别地使用这两种方法。这些概念非常通用,涵盖的范围远远超过MPI或openmp。
垂直并行是一个系统同时使用多个不同的设备的能力。例如,一个程序可能有一个线程执行大量计算,而另一个线程处理DB查询,第三个线程执行IO。大多数操作系统都很自然地公开了这种能力。
当使用单个设备或对多个类似数据项执行操作时,就会发生水平并行。例如,在同一段代码上运行多个线程,但数据不同时,就会出现这种并行性。
在软件世界中,一个有趣的例子实际上是地图缩减算法,它使用这两种方法:
)累积。
类似地,在硬件世界中,超标量流水线CPU确实使用这两种变体,其中流水线是垂直并行化的一个特定实例(就像map/还原阶段,但还有几个步骤)。
使用此术语的原因可能与供应链使用的原因相同:价值是通过链接不同的处理步骤或级别来产生的。最终的产品可以看作是抽象的构造树的根(从下到上)或依赖(从上到下),其中每个节点都是中间级别或步骤的结果。在这里,您可以很容易地看到供应链和计算之间的类比。
https://stackoverflow.com/questions/5832895
复制相似问题