【问题标题】:Using MPI_Scatter with C++ - Scattering over different communicators将 MPI_Scatter 与 C++ 一起使用 - 分散在不同的通信器上
【发布时间】:2016-04-21 05:08:55
【问题描述】:

在 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?

【问题讨论】:

    标签: c++ mpi


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-07-09
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      • 2015-06-07
      • 2013-03-24
      • 1970-01-01
      相关资源
      最近更新 更多