在C++中,使用MPI_Scatter的示例是:
MPI::COMM_WORLD.Scatter(sendbuf, 100, MPI::INT, recvarr, 100,MPI::INT, root);
Run Code Online (Sandbox Code Playgroud)
这将每个进程的内容分散sendbuff到100个单独的进程recvarr中,但仅限于MPI World通信器.
与C中的MPI_Scatter不同,C++版本没有通信器的输入.如何修改此示例以适用于任何通信器,而不仅仅是MPI_COMM_WORLD?
例如,说我的传播者被命名comm.如何sendbuff在comm通信组内而不是MPI_COMM_WORLD中分散?
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中删除,因为它们未得到充分利用,难以维护,并且有类似的笨拙误解.