首页 文章

需要对MPI做一些澄清

提问于
浏览
1

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

  • MPI的主要功能是允许在集群中并行运行的相关进程之间的通信 . 它是否正确?

  • 程序在主节点上运行,主节点又将特定任务传递给工作节点 - 并接收结果 . 不需要在每个工作节点上提供代码副本 .

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

1 回答

  • 3

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

    在MPI标准(http://www.mpi-forum.org/docs/docs.html)中,'s decided on by the MPI Forum, there are specific language requirements that are specified. Up to now, there have only been three languages that are required for an MPI implementation: C, C++, and FORTRAN (and actually the C++ requirement has been removed). The reason for this is that these are the languages most commonly used by the scientific applications that use MPI. This doesn'阻止现有的其他语言绑定,但支持每种语言对于实现来说是一个很大的负担,并不总是可行的 . 还有很多其他语言绑定可用:

    我敢肯定,除了这一点外,还有一些更具异国情调的语言 . 只需搜索MPI,您一定会找到相关信息 . MPI实际上非常受欢迎,甚至在科学界之外 . 已经尝试在视频游戏社区,分布式数据库等中使用它 . 然而,科学计算仍然是MPI的最大用户之一,并且仍然是论坛的主要焦点之一 .

相关问题