使用 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 使用 GCC 而不是 ICC?是不是需要重新编译 OpenMPI?