Parallel processing 与MPI、TCP/IP的区别

Parallel processing 与MPI、TCP/IP的区别,parallel-processing,mpi,Parallel Processing,Mpi,我对MPI、套接字和TCP/IP有些困惑。 这三种通信协议都可以使用吗 不同的互连,比如Infiniband、ethernet还是其他什么? 如果这个问题听起来很幼稚,很抱歉给您添麻烦,但我真的对这三个术语感到困惑。TCP/IP是一系列网络协议。IP是较低级别的协议,负责在Internet上从一个地方到另一个地方获取数据包。TCP位于IP之上,添加了虚拟电路/连接语义。仅使用IP,您只能发送和接收未组织成流或连接的独立数据包。几乎可以使用任何物理传输机制来移动IP数据包。对于本地网络,它通常是以

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

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

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


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

如果你的问题的目的是决定如何编写并行编程应用程序,您可能不应该查看TCP/IP或套接字,因为这些东西的级别将比您想要的低得多。您可能会想看看MPI或任何PGA语言,如UPC、Co-array Fortran、Global array、Chapel等。它们比编写自己的网络层要容易得多


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

一个更正:MPI是一个API,用于在具有独立内存空间的实体(进程)之间传递消息。该标准不关心这些进程在何处运行——它可以在联网计算机(集群)上,也可以在大型共享内存机器上,也可以是提供相同语义的任何其他体系结构(例如IBM Blue Gene)。