2013-08-05 65 views
1

我正在研究各种并行编程模型,但我偶然发现了MPI。有几件事我不确定。据我所知:需要对MPI进行一些说明

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

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

+0

MPI更多地用于科学编程,它有一个使用历史,并且科学界选择的语言(很长一段时间)一直是/ C/Fortran。 – arynaq

+0

(1)是正确的; (2)不是。 –

+0

*那么为什么MPI在它的利基之外更受欢迎呢?可能是因为管理MPI发展和它的用户社区的人并不关心它在其利基之外的受欢迎程度,而是他们关心它的效率和效率它的利基。 MPI并不是唯一的消息传递库,Java程序员可以使用其他选项。 –

回答

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的最大用户之一,仍然是论坛的主要焦点之一。

+0

是的,但我刚刚检出了你发布的Java链接。这一切都是“暂时的”,“仍在努力”,“正在进行中......”。不给人感觉它不是流行就是成熟。 – spacitron

+0

你说得对。它已经很久没有出现,所以它不会像“官方支持”的语言那么成熟。但是,它会(AFAIK)工作。您可能需要获取夜间压缩包而不是最新版本,但可以保持这种状态。我不能说它的受欢迎程度。 –

+1

你是对的,Open MPI Java实现是“临时”的。 FWIW,我们实际上正准备将其新版本提交给Open MPI SVN中继 - 可能在本周晚些时候。它比以前的版本更完整,性能更好,口味更好,填充量更少等。本周晚些时候,请查看http://www.open-mpi.org/nightly/trunk/获取夜间快照tarball。在那里会有一个Java的README文件,介绍如何使用它等。 –