在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?
答案 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中删除,因为它们未得到充分利用,难以维护,并且存在类似笨拙的误解。