差异b / w MPI,TCP / IP

时间:2013-08-14 22:28:16

标签: parallel-processing mpi

我对MPI,套接字和TCP / IP感到困惑。 所有这三种通信协议都可以使用 不同的互连,如Infiniband,以太网,还是其他什么? 如果问题听起来很幼稚,我很抱歉,但我真的对这三个术语感到困惑。

2 个答案:

答案 0 :(得分:6)

TCP / IP是一系列网络协议。 IP是较低级别的协议,负责通过Internet从一个地方获取数据包。 TCP位于IP之上,并添加了虚拟电路/连接语义。仅使用IP,您只能发送和接收未组织为流或连接的独立数据包。几乎可以使用任何物理传输机制来移动IP数据包。对于本地网络,它通常是以太网,但您可以使用任何东西。甚至还有一个RFC指定了运营商发送IP数据包的方式。

套接字是一种用于访问操作系统网络功能的半标准API。您的程序可以调用名为socket,bind,listen,connect等的各种函数来发送/接收数据,连接到其他计算机,以及侦听来自其他计算机的连接。理论上,您可以通过套接字API使用任何网络协议系列 - 协议系列是您传入的参数 - 但是现在您几乎总是指定TCP / IP。 (常用的另一个选项是本地Unix套接字。)

MPI是一种用于在服务器群集上运行的进程之间传递消息的API。 MPI比TCP / IP和套接字更高级别。它理论上可以使用任何网络协议系列,如果它使用TCP / IP或套接字API支持的其他系列,那么它可能使用套接字API与操作系统进行通信。

答案 1 :(得分:2)

如果您的问题背后的目的是决定如何编写并行编程应用程序,那么您可能不应该查看TCP / IP或套接字,因为这些事情将比您想要的要低得多。您可能希望查看类似MPI或任何PGAS语言的内容,如UPC,Co-array Fortran,Global Arrays,Chapel等。它们将比使用自己的网络层更容易使用。

当你使用其中一个更高级别的库时,你会得到很多很好的抽象,例如集体操作,远程内存访问和其他功能,这些功能可以更容易地编写并行代码而不是处理下面的所有操作系统内容。它还使您的代码可以在不同的机器/架构之间移植。