【问题标题】:what are exactly MPI, MPICH, and OPENMPI? what does "implementation" mean in this context?MPI、MPICH 和 OPENMPI 到底是什么?在这种情况下,“实施”是什么意思?
【发布时间】:2012-07-03 07:44:47
【问题描述】:

对于那些在该领域工作了很长时间的人来说,我的问题可能看起来很愚蠢,但我感谢您耐心地为我详细说明。

当他们说 MPICH 是 MPI 的“实现”时,这是什么意思?

以下类比是否正确(?): 如果我们将 MPI 视为 FORTRAN 编译器的一组标准,那么 MPICH 和 OPEMPI 是 FORTRAN 编译器的不同版本,如 Intel.Fortran、Compaq.Fortran、GNU.Fortran 等。

【问题讨论】:

  • 是的,实现是类似的。不幸的是,您的问题不适合 StackOverflow。

标签: mpi openmpi mpich


【解决方案1】:

MPI 是一种标准:它概述了分布式系统中消息传递的特定模型。但是,它只给出了一系列要求:它实际上并不包含任何代码,也没有具体说明需要如何满足这些要求。例如,看一下官方 MPI 2.2 规范的摘录(截至今天):

有效的 MPI 实现可以保证 点对点通信,在本节中进行描述。

Order 消息不超车:如果发送者连续发送两条消息到同一个目的地,并且都匹配相同 接收,则此操作无法接收第二条消息,如果 第一个仍在等待中。

然后继续解释此要求背后的基本原理并提供示例,但对要求本身只字未提。

MPI 实现是一个满足 MPI 规范中的所有要求(如上述要求)的库。但是,该标准绝对不包含关于可以/不能/应该使用什么语言结构、操作系统调用、第 3 方库等的要求。偶尔,它会给实现者建议,像这样:

给实现者的建议。 实现可以保持引用计数 使用该数据类型的活动通信,以便决定 什么时候释放它。此外,可以实现派生的构造函数 数据类型,以便它们保留指向其数据类型参数的指针, 而不是复制它们。在这种情况下,需要跟踪 活动数据类型定义引用,以便了解何时使用数据类型 对象可以被释放。 (对实施者的建议结束。)

但是,这些仍然是模糊的、与语言无关的,并且只是建议:实现可以忽略这些建议中的每一个,并且仍然符合标准。

所以是的,本质上它类似于编译器的各种实现。如果一个程序为一种语言获取有效的源代码,并生成二进制代码,该二进制代码可以完成语言规范在给定原始源代码的情况下应该做的所有事情,那么它就是该语言的合规编译器。同样,如果您可以使用库以不违反 MPI 规范的任何规则的方式传递消息,那么这就是有效的 MPI 实现。

【讨论】:

    猜你喜欢
    • 2020-04-04
    • 2017-03-28
    • 2016-08-26
    • 2014-10-27
    • 2019-10-15
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多