需要对MPI做一些澄清

时间:2013-08-05 13:48:21

标签: java parallel-processing mpi

我正在研究各种并行编程模型,我偶然发现了MPI。有一些我不确定的事情。据我所知:

  1. MPI的主要功能是允许在群集中并行运行的相关进程之间的通信。这是对的吗?
  2. 程序在主节点上运行,主节点又将特定任务传递给工作节点 - 并接收结果。不需要在每个工作节点上提供代码副本。
  3. 此外,我发现的少数更新的MPI框架似乎只支持一组有限的语言。我正在尝试使用Java进行实验,但我发现的所有Java MPI库都已过时或者似乎没有C和Fortran的成熟度。这是为什么?我认为对于编写并行或分布式程序的人来说,消息传递是一个非常有用的功能,那么为什么MPI在其利基之外不受欢迎呢?

1 个答案:

答案 0 :(得分: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的最大用户之一,并且仍然是论坛的主要焦点之一。