c++ - 如何使用 MPI 在多个独立启动的程序之间传输数据

标签 c++ c mpi openmpi data-transfer

我是 MPI 的新手。我正在阅读 mpitutorial.com 上的教程.不幸的是,这些示例并没有涉及我想要深入研究的那种连接/通信。我要建立的是:

我想要一个中央 MPI 程序,其他已独立启动的程序可以连接到该程序。中央 MPI 程序承担的角色类似于 1960 年的总机和总机接线员。这意味着连接的程序既从中央 MPI 程序接收数据,也向中央 MPI 程序发送数据。该类比的一个异常(exception)是中央 MPI 程序在发送数据之前修改它收到的数据。

在上面,将我视为中央 MPI 程序的开发人员。假设所有连接的程序都是独立开发的,而不是我开发的。最后,所有程序都是开源的。所以我也可以修改那些不是我自己开发的程序。

有人可以向我解释如何使用 MPI 建立这样的联系,或者通过告诉我应该广泛研究哪些 MPI 概念来为我指明正确的方向吗?

最佳答案

你想要的东西绝对可以用 MPI 实现,而且有一个完整的 chapter in the MPI standard专用于遵循客户端/服务器模型的程序。

不幸的是,这是 MPI 领域中一个相对晦涩难懂且文档匮乏的角落,该机制本身非常初级且存在许多缺点,最明显的是标准中不存在非阻塞接受操作,而且许多MPI 实现不是完全线程安全的。在这种情况下,最好的信息来源之一就是 MPI 标准本身。还有一些问题,比如 this onethis one这将使您了解如何完成工作。

关于c++ - 如何使用 MPI 在多个独立启动的程序之间传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25798222/

相关文章:

c++ - 如何使用矩形绘制粗线?

C++ 代码不读入文件

c++ - 如何知道 MPI 请求的接收者和发送者

c++ - "baseclass"用于模板?

c++ - 段错误 : Address not mapped/Failing at address: (nil)

c - 在c中读取单独的用户输入行

类中的c++变量初始化以使用mpi发送它

linux - 错误 ; MPI 上的图像处理

c - 使用 memcpy() 将缓冲区的尾部移动到其开头? (重叠)

c - 在 gcc 命令中添加 linux 头文件