使用 OpenMPI 进行数据分发

Posted

技术标签:

【中文标题】使用 OpenMPI 进行数据分发【英文标题】:Data distribution using OpenMPI 【发布时间】:2012-03-25 09:31:47 【问题描述】:

我想使用 OpenMPI 在通过 TCP/IP 网络连接的多台机器上分发数据。任何人都可以指出正确的资源和方向。我是 OpenMPI 的新手。

谢谢

【问题讨论】:

【参考方案1】:

这取决于您要编写软件的语言。但基本上,openMPI 应用程序看起来像这样:

    为 MPI 调用 MPI_INIT 以初始化节点之间的必要通信。 使用 MPI_Send、MPI_RECV 函数发送或接收数据。这些函数有阻塞和非阻塞调用,还有其他几个函数 - 广播(发送给每个人)、分散(将数组中的数据等量分配给每个主机)等。 使用 MPI_FINALIZE 完成通信过程。

在 MPI 中,几乎总是包含以下工作流程:

    Master主机被分配-通常是processId = 0的主机。它的功能是协调slave主机的工作。基本上,如果您必须从数组中并行获取最大值,那么他的工作就是获取数组,将其等量分配给从站,从从站收集结果并从列表中选择最大值。 从属主机 - 等待数据接收,执行处理,将结果发送回主控。

我会推荐 this MPI 教程用于 C++ 开发,还可以查看 so post 关于该主题的书籍。

【讨论】:

【参考方案2】:

这只是网上众多MPI tutorials 之一;我很惊讶你自己没有找到这个。

【讨论】:

以上是关于使用 OpenMPI 进行数据分发的主要内容,如果未能解决你的问题,请参考以下文章

OpenMPI源码剖析:网络通信原理

如何强制 OpenMPI 使用 GCC 而不是 ICC?是不是需要重新编译 OpenMPI?

OpenMPI的下载和安装

HPL测试的配置(依赖于BLAS),通过OpenMpi进行实现

OpenMPI 节点和网络拓扑

如何指定 OpenMPI 使用的端口范围?