1

我正在研究各种并行编程模型,但我偶然发现了 MPI。有几件事我不确定。据我了解:

  1. MPI的主要功能是允许在集群中并行运行的相关进程之间进行通信。这个对吗?
  2. 程序在主节点上运行,主节点又将特定任务传达给工作节点 - 并接收结果。无需在每个工作节点上都保留一份代码副本。

此外,我发现的少数更新的 MPI 框架似乎只支持一组受限制的语言。我正在考虑在 Java 中对此进行试验,但我发现的所有 Java MPI 库要么已经过时,要么似乎没有 C 和 Fortran 的成熟度。这是为什么?我认为消息传递对于编写并行或分布式程序的任何人来说都是一个非常有用的功能,那么为什么 MPI 在其利基市场之外没有更受欢迎呢?

4

1 回答 1

3

MPI 传统上是一种 SPMD 模型,其中一个代码在许多进程上运行(通常分布在多个节点/处理器/内核/等上)。这些进程使用 MPI(消息传递接口)中的调用显式传递消息。然后各个进程可以开始工作并在必要时再次通信。它不是一种可以将作业自动分配到工作节点的任务语言。还有其他语言可以做这种事情(Hadoop/MapReduce、Charm++ 等可能更适合该模型)。

在 MPI 论坛决定的 MPI 标准 ( http://www.mpi-forum.org/docs/docs.html ) 中,指定了特定的语言要求。到目前为止,MPI 实现只需要三种语言:C、C++ 和 FORTRAN(实际上已经删除了 C++ 要求)。原因是这些是使用 MPI 的科学应用程序最常用的语言。这不会阻止其他语言绑定的存在,但支持每种语言对实现来说是一个很大的负担,而且并不总是可行的。还有许多其他可用的语言绑定:

我敢肯定,对于一些更具异国情调的语言来说,还有更多的东西。只需搜索 MPI,您一定会找到信息。MPI 实际上很受欢迎,即使在科学界之外。已经尝试在视频游戏社区、分布式数据库等中使用它。然而,科学计算仍然是 MPI 的最大用户之一,并且仍然是论坛的主要关注点之一。

于 2013-08-05T14:07:33.857 回答