首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >垂直平行和水平平行

垂直平行和水平平行
EN

Stack Overflow用户
提问于 2011-04-29 13:47:34
回答 1查看 3.4K关注 0票数 4

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

EN

回答 1

Stack Overflow用户

发布于 2013-03-08 21:44:46

这些术语似乎没有被广泛使用,也许是因为一个进程或系统经常不加区别地使用这两种方法。这些概念非常通用,涵盖的范围远远超过MPI或openmp。

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

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

在软件世界中,一个有趣的例子实际上是地图缩减算法,它使用这两种方法:

  • 水平并行发生在地图阶段,当数据被分割和分散在多个cpu上进行处理时,
  • 垂直并行在映射和缩减阶段之间发生,其中数据首先被分成块,然后由映射线程处理,然后由减少线程(

)累积。

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

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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5832895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档