MPI是否适用于大容量软实时IPC?

时间:2009-12-09 18:18:37

标签: performance networking ipc mpi openmpi

如果我有一个服务器并且我有两个进程类型A(许多进程处理多个线程)和B(一个进程n-threads与n-cpu的),我想发送大量的单向消息A到B.与使用以下的自定义实现相比,MPI是更好的实现吗?

  1. Unix域套接字
  2. Windows命名管道
  3. 共享内存
  4. 我正在考虑基于1和2编写自己的库,我也想知道3是否更好,因为共享内存需要锁定。

    进程A提供外部服务,因此B的资源使用和消息传递通常需要消耗尽可能少的资源,并且A在发送消息时可以在阻塞或非阻塞中实现。 B的资源使用和消息传递需要随着A的使用而线性扩展。

    我最终还需要在机器之间进行广播。可能是过程B.

    我的离题问题是:MPI(特别是openMPI)是一个很好的库,它在各种操作系统上使用最优的内核原语。

2 个答案:

答案 0 :(得分:2)

如果你愿意重新设计你的架构以适应它的消息传递基础设施,那么MPI很可能会很好地工作。

理论上,至少当托管在单个服务器上时,如果你包装自己的库,你可以更快地做一些事情,因为你不必转换进出MPI消息结构。话虽这么说,MPI非常有效(特别是MPI-2,Open MPI支持),非常非常强大。您很难从自己的库中获得相同的灵活性,可配置性和健壮性。

如果你要在多台机器之间进行广播,那么MPI可能比尝试推出自己的方法更好。

此外,MPI支持多种通信模式。它支持shared memory用于非常快速的单机通信,以及用于机器间通信的TCP(以及一些商业,更快的选项)。

答案 1 :(得分:1)

MPI非常高效,专为高性能应用而设计 您甚至可以将它用于同一mboard上的CPU之间的通信。

我不确定广播,我多年前使用的系统没有,但我不记得这是否是我们的互连或MPICH的限制。

PS。我们使用MPICH是因为当时它在Windows上运行得最好,我们需要灵活性,我还没有使用MPICH2或OpenMPI。

相关问题