将MPI_Scatter与C ++一起使用 - 对不同的通信器进行散射

时间:2016-04-20 19:19:12

标签: c++ mpi

在C ++中,使用MPI_Scatter的示例是:

MPI::COMM_WORLD.Scatter(sendbuf, 100, MPI::INT, recvarr, 100,MPI::INT, root);

这会将sendbuff的内容分散到100个单独的流程中,以便在每个流程上生成recvarr ,但仅限于MPI World沟通器

与C中的MPI_Scatter不同,C ++版本没有为通信器提供输入。如何修改此示例以适用于任何通信器,而不仅仅是MPI_COMM_WORLD?

例如,假设我的传播者名为comm。如何将sendbuff分散到comm个传播者组而不是MPI_COMM_WORLD?

1 个答案:

答案 0 :(得分:5)

comm.Scatter(sendbuf, 100, MPI::INT, recvarr, 100,MPI::INT, root);

.左侧的对象是MPI通信器参数。 MPI::COMM_WORLD碰巧是MPI通信器的预定义实例,对应于C绑定的预定义MPI_COMM_WORLD

请注意,MPI C ++绑定已在MPI-3.0中删除,因为它们未得到充分利用,难以维护,并且存在类似笨拙的误解。