【问题标题】:mpi4py create multiple groups and scatter from each groupmpi4py 创建多个组并从每个组分散
【发布时间】:2018-11-26 18:42:28
【问题描述】:

假设我有一个 64 级的通讯。如何在 mpi4py 中创建一个由前 x 个等级组成的组,第二个由剩余的 64-x 个等级组成的组,以及每个组的通讯?

【问题讨论】:

  • MPI_Comm_split()
  • @GillesGouaillardet 拆分的参数是“颜色”和“键”。不确定它们是什么以及它们如何/是否与排名相关?
  • 到目前为止你尝试了什么?
  • 不幸的是,mpi4py 文档......相当稀疏......看看标准:mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf

标签: mpi openmpi hpc mpi4py


【解决方案1】:

MPI_Comm_split 通过根据输入值 colorkey 将通信器拆分为一组子通信器来创建新的通信器。

color 传递相同值的所有进程都分配给相同的通信器。在您的情况下,前 x 个进程应该传入一个颜色值,其余的应该选择一个不同的值。

key 确定每个新通信器中的排序(等级)。传入 key 最小值的过程将是 0 级,下一个最小的将是 1 级,依此类推。如果您不需要更改原来的进程顺序,您可以使用它们的等级作为key

结合这些,这里是一个C语言的例子:

int rank, size;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);

int x = 10;
int color = rank < x;

MPI_Comm new_comm;
MPI_Comm_split(MPI_COMM_WORLD, color, rank, &new_comm);

来源和更多信息:http://mpitutorial.com/tutorials/introduction-to-groups-and-communicators/

【讨论】:

    猜你喜欢
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    相关资源
    最近更新 更多