【问题标题】:Remote memory access using intercommunicator使用内部通信器进行远程内存访问
【发布时间】:2015-10-15 20:11:08
【问题描述】:

我有一个在 C++ 中使用 MPI(使用端口)的客户端服务器系统。它运行良好。正在做我打算做的事情。

我最近阅读了有关 MPI 中使用 MPI_Win 内存窗口的远程内存访问 (RMA) 的信息。我想知道是否可以使用 RMA 创建类似于客户端-服务器的系统。 (假设客户端之间访问同一块内存的同步是以某种方式处理的。)

我想在服务器上创建一个窗口,让客户端通过这个窗口访问内存。

有人已经对这个模型有一些经验了吗?欢迎任何cmets。

【问题讨论】:

  • 我前一阵子写了this super simple example,它使用单面的MPI通信。尽管这使用了内部通信器,但这可能会让您了解这些可以做什么。

标签: c++ c mpi


【解决方案1】:

RMA 窗口的创建是一个集体操作,涉及到内部通信器的进程组。要使其与内部通信器一起工作,您必须首先通过MPI_INTERCOMM_MERGE 合并两个进程组,然后将生成的内部通信器用于 RMA 操作。请注意,这样做会消除对讲机提供的部分绝缘优势。

【讨论】:

  • 在 MPICH 和 OpenMPI 的文档中,没有提到通信是否应该只是 intraCommunicator。它只是另一个 MPI_Comm 。 @Hristo
  • 所以写在the MPI standard,第11.2节:"MPI提供了如下窗口初始化函数:MPI_WIN_CREATEMPI_WIN_ALLOCATEMPI_WIN_ALLOCATE_SHARED,和MPI_WIN_CREATE_DYNAMIC它们在内部通信器上是集体的。"
  • 我积极参与与 RMA 相关的 MPI 论坛,@HristoIliev 是完全正确的。
  • @HristoIliev ...是的...我昨天用对讲机进行了实验,是的,它失败了。所以你是对的。我会尝试你的建议。
  • @HristoIliev .. 你的建议奏效了。我可以使用 MPI_WIN 在服务器和客户端之间进行通信。感谢您的帮助。但我试图查找在合并中我会失去什么“绝缘好处”。你能指出我找到互通器的这些好处的方向吗?
猜你喜欢
  • 1970-01-01
  • 2019-08-07
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多