Cluster 和 MPP 超级计算机架构有啥区别?

Posted

技术标签:

【中文标题】Cluster 和 MPP 超级计算机架构有啥区别?【英文标题】:What is the difference between a Cluster and MPP supercomputer architecture?Cluster 和 MPP 超级计算机架构有什么区别? 【发布时间】:2011-07-31 01:36:21 【问题描述】:

Cluster 和 MPP 超级计算机架构有什么区别?

【问题讨论】:

【参考方案1】:

在集群中,每台机器在内存、磁盘等方面很大程度上独立于其他机器。它们通过正常网络的一些变化相互连接。集群主要存在于程序员的脑海中,以及她/他如何选择分配工作。

在大规模并行处理器中,实际上只有 一个 机器具有数千个 CPU 紧密互连。 MPP 具有奇特的内存架构,允许与相邻处理器极高速交换中间结果。

主要的变体是 SIMD(单指令多数据)和 MIMD(多指令多数据)。在 SIMD 系统中,每个处理器同时执行相同的指令,只是在不同的内存位上。本质上,只有一个程序计数器。在 MIMD 机器中,每个 CPU 都有自己的 PC。

MPP 编程起来很麻烦,并且仅在令人尴尬的并行(实际上就是他们所说的)算法上使用。但是,如果您有这样的问题,那么 MPP 可能会非常快。它们也非常昂贵。

【讨论】:

我更同意下面 ang mo 的回答。当今 TOP500 中的 MPP 具有(通常,如果不是全部)混合分布式共享内存架构。对于程序员来说没有什么区别,实际中多使用MPI(+OpenMP,CUDA,...)。有时,拓扑感知代码可以表现得更好,但代价是可移植性损失。 你可能是对的。不幸的是,ang mo 引用的论文在付费墙后面,所以我不能直接评论它。诚然,我的回答是基于我自己几年前的经验(例如 1990 年的 MasPar 机器)。与我的答案最密切相关的当今技术可能是现代 GPGPU 中的并行 stream processing。我相信一个持久不变的事实是,使用任何类型的 MPP 都需要程序员以非常不同的方式思考应该如何解决他们的问题。 当然,今天的术语有点不同。像 BG/Q 或 Cray XC 这样的机器被认为是 MPP。 Wikipedia 指出 MPP 具有许多与集群相同的特征,但 MPP 具有专门的互连网络(而集群使用商品硬件进行联网),这是我会采用的术语。 你现在是 LMGTFY 的答案 :) @RonE:奇怪的是,我在大约 7 或 8 年前写的关于修复Kenmore Electric Dryer 的页面似乎也有这种状态。我收到了超过 100 个“谢谢!”来自那些发现自己可以通过自己进行一些诊断工作来节省大笔费用的人的电子邮件。【参考方案2】:

top500 列表在 MPP 和集群之间使用了稍微不同的区别,如 Dongarra et al. 论文中所述:

[集群是]由独立节点的集成集合组成的并行计算机系统,每个节点本身就是一个系统,能够独立运行并衍生自为其他独立目的而开发和销售的产品

与集群相比,现代 MPP(例如 IBM Blue Gene)的集成度更高:单个节点不能单独运行,它们通过自定义网络(如多维环面)连接。但是,与集群类似,没有跨越所有节点的单一共享内存(注意:MPP 可能是分层的,共享内存可能在单个节点 (NUMA) 内或少数节点之间使用)。

因此,在这种情况下,我会非常小心地使用术语 SIMD 和 MIMD,因为它们通常描述共享内存架构 (SMP)。

更新:

Dongarra et al.链接

更新: MPP 可以有在内部使用共享内存的节点;但不共享整个 MPP 内存。

【讨论】:

我反驳说 MPP 没有共享记忆。 MPP 中的节点,例如使用 CC-NUMA 和 NCC-NUMA 技术的 SGI Altix 或 Cray T3E 中的节点实现/使用分布式共享内存 (DSM)。【参考方案3】:

集群是一堆机器,通常是以太网互连(阅读:网络),每台机器都运行自己的独立操作系统副本,恰好服务于单一目的。

MPP 超级计算机通常意味着更快的支持非常快速的互连(例如 SGI NUMALink),它支持分布式共享内存(在不同的 MPP 节点上运行进程,这些节点通过快速互连使用共享内存来共享数据,就好像它们在一个单个计算机)甚至单个系统映像(操作系统的单个实例,主要是 Linux,同时在所有节点上运行,就像在单个计算机上一样 - 例如,任何节点上的“ps aux”都会向您显示所有在 MPP 上运行的进程)。

正如您所看到的,定义非常灵活,更多的是规模问题,而不是明确的差异。

【讨论】:

【参考方案4】:

我搜索了很多 HPC 文献,但找不到 MPP 的具体定义。对于由多个互连的常规个人计算机或工作站组成的集群,通常与标准技术(如以太网或开源操作系统)相结合,存在相当大的争议。 MPP 一词通常用于构建分布式内存计算机的更多专有方法,通常具有专有技术。

例如:Tianhe-2 被认为是一个集群,因为它使用 x86-64 节点和常规操作系统(Kylin Linux)。 Sunway TaihuLight 被认为是 MPP,因为它的节点具有其特定的架构 SW26010,并在他自己的名为 Sunway Raise OS 的操作系统上工作。

这件事我找到的最具体的解释在Sourcebook of Parallel Computing (Dongarra et al.):

我们注意到,集群一词可以广泛应用(任何使用大量商品组件构建的系统)或狭义(仅商品组件和开源软件)。事实上,集群并没有精确的定义。用于争论系统是大规模并行处理器 (MPP) 而不是集群的一些问题包括专有互连 (...),特别是为特定的 并行计算机,以及将整个系统视为一台机器的特殊软件,特别是对于系统管理员。集群可以由个人计算机或工作站(单处理器或对称多处理器 (SMP))构建,并且可以运行开源或专有操作系统。

【讨论】:

以上是关于Cluster 和 MPP 超级计算机架构有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

当我应该使用其中之一时,“sklearn.cluster.k_means”和“sklearn.cluster.KMeans”有啥区别?

kotlin MPP 与 Kotlin Native 有啥不同?

linux系统与嵌入式linux有啥区别和关系?

Java泛型中的“超级”和“扩展”有啥区别[重复]

GBase 8a MPP Cluster 安装部署过程

GBase 8a MPP Cluster 安装部署过程