并行与分布式计算 - 分界线

时间:2014-03-01 06:55:14

标签: parallel-processing cluster-computing distributed-computing

我正在研究b / w并行和分布式系统的差异。我被告知这个部门正在模糊。此外,集群可以被视为并行和分布式系统(取决于上下文 - 无论这意味着什么)。

这怎么可能?群集不应仅仅是分散系统吗?

2 个答案:

答案 0 :(得分:2)

并行计算:

  • 同一应用程序/进程应在多个内核/GPU 上拆分、同时执行/运行,以并行处理任务(可以在位级、指令级、数据或任务级)。
  • 资源紧密耦合 - 内存应在系统内的所有内核/GPU 之间共享,而这些内核/GPU 又应用于交换信息(需要最少的同步通信)。
  • 使用可提高系统性能,因为主要关注点是并行使用多个内核/GPU 的处理能力。

有各种并行系统。

多处理器并行系统 处理器可以直接访问共享内存(UMA 模型)。处理器紧密放置,由互连网络连接,进程间通信应通过对共享内存的读写操作和 MPI 提供的消息传递原语来完成。这里通常处理器是相同类型的(也运行相同的操作系统),并且应该在具有共享内存的同一台计算机/设备中。硬件和软件非常紧密结合

多计算机并行系统: 在这里,处理器不能直接访问共享内存,多个处理器的内存可能会或可能不会形成公共地址空间(NUMA)。处理器应紧密放置(没有公共时钟),并通过通过公共地址空间或消息传递进行通信的互连网络连接。

分布式计算:

  • 程序/问题是分开的,更大程序的组件是分布式的,因此这些任务应该在多台计算机(计算设备)上执行/运行,这些计算机通常是分开的,但连接在网络中。
  • 资源松散耦合 - 内存应分布(或计算机专用),并且应在多台计算机之间使用消息传递机制,因为任务可能具有不同的性质并且在执行期间需要 IPC。它可以使用不同的处理器/不同的操作系统并相互协作。通常它们不会有公共时钟或共享公共内存。 (处理器通常应通过网络进行通信 - 处理器可以在地理位置上相距很远或驻留在 WAN 或 LAN 上)
  • 使用可以提高系统的可扩展性、可靠性/可用性、异构性。
<块引用>

集群不应该只是分布式系统吗?

通常,一个集群由许多不共享内存但统一联网的分布式/独立系统组成。但是,在一个典型的集群中,为了提高集群的性能,应该有应用的并行性。还应该注意的是,并行计算算法可以使用基于共享内存的系统或分布式系统(使用消息传递)来完成。

另外,应该注意的是,分布式计算也可以使用“以数据库为中心”的架构方法来执行,该方法通过利用共享数据库来避免消息机制(进程间通信)。

答案 1 :(得分:1)

正如您所提到的,这取决于具体情况。有两个主要背景:

  • 集群如何在内部处理其任务(例如,维护一致的集群状态)
  • 应用程序如何使用群集。

内部算法本质上是分布式的。考虑主选举和成员算法作为一个例子(当然,集群有更多的任务;这并不意味着没有并行的)。 另一方面,应用程序经常并行化其工作负载以在群集上运行。群集通常提供api或组件(如调度程序)以启用该功能。另一个例子是hadoop类型的工作负载及其apis。使用并行查询在多个节点上同时执行复杂查询的数据库也使用并行性。