【问题标题】:Difference b/w MPI,TCP/IP [closed]MPI,TCP / IP之间的区别[关闭]
【发布时间】:2013-08-17 02:14:01
【问题描述】:

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

【问题讨论】:

    标签: parallel-processing mpi


    【解决方案1】:

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

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

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

    【讨论】:

    • 一个更正:MPI 是一种 API,用于在具有分离的内存空间的实体之间传递消息 - 进程。该标准不关心这些进程在哪里运行——它可能在联网计算机(集群)上,可能在大型共享内存机器上,也可能是提供相同语义的任何其他架构(例如 IBM Blue Gene)。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-10-07
      • 2018-10-10
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      • 2011-06-24
      • 2014-11-28
      • 2016-08-01
      相关资源
      最近更新 更多