【问题标题】:MPI spawn and cray's aprunMPI spawn 和 cray 的 aprun
【发布时间】:2019-01-21 22:21:37
【问题描述】:

假设我有一个主程序,它基本上是一个 1 rank mpi,它使用 MPI spawn 来生成 5 个工作程序。

现在,如果我使用以下命令执行我的主人

aprun -n 1 -N 1 master

生成后的rank总数将是6。但是所有6个rank会在同一个节点上运行吗?无论如何我可以在 3 个节点之间分配 6 个吗?

我可以只复制一份主进程和 5 个工作进程。

【问题讨论】:

    标签: parallel-processing mpi cray


    【解决方案1】:

    Cray MPI 直到最近才支持 MPI_Comm_spawn,它为生成的 MPI 作业管理资源的解决方案是独一无二的。使用aprun 启动占位符作业以管理用于托管衍生作业的资源,即将托管衍生 MPI 等级的核心/节点。由占位符作业管理的资源集称为“等级池”,类似于内存池。以下是设置和使用排名池的方法:

    rankpool.c

    int main(int argc, char **argv) {
        MPI_Init(&argc, &argv);
        /* Name this rank pool "all_nodes", which will be
         * used by MPI_Comm_spawn to identify it. */
        MPIX_Comm_rankpool(MPI_COMM_WORLD, "all_nodes", /* 60 seconds timeout */ 60);
        MPI_Finalize();
    }
    

    spawning_app.c

    [ ... code goes here ... ]
    
    MPI_Info_create(&info);
    /* key = "rankpool", value = "all_nodes" */
    MPI_Info_set(info, "rankpool", "all_nodes");
    MPI_Comm_spawn("master", argv, num_ranks,
                   info, 0, comm, &child_comm,
                   MPI_ERRCODES_IGNORE);
    
    [ ... more code ... ]
    

    如果您想在三个节点上分配 6 个等级,您可以使用 aprun -n 6 -N 2 启动您的等级池,这样您就有 6 个总等级,每个节点有 2 个等级。

    如果您希望生成的队伍有更具体的布局,您可以在传递给MPIX_Comm_rankpool 的通讯器中重新排列队伍以获得此效果。例如,如果您的主作业生成各种子作业,每个子作业都有 4 个等级,并且您希望每个子作业的等级均匀分布在节点上,您可以从以下位置重新排序 MPI_COMM_WORLD 中的等级:

                MPI_COMM_WOLRD
                --------------
            node 1        node 2        node 3          node 4
    ranks   0  1  2  3    4  5  6  7    8  9  10  11    12  13  14  15
    

    到这里:

                reordered_comm
                --------------
            node 1         node 2         node 3          node 4
    ranks   0  4  8  12    1  5  9  13    2  6  10  14    3  7  11  15
    

    MPIX_Comm_rankpool 将尝试为每个子作业分配一组连续的等级,因此子作业通常在每个节点上都有一个等级。

    有关这一切如何运作的更多详细信息,请参阅 Cray 的动态进程管理whitepaper

    【讨论】:

      猜你喜欢
      • 2012-02-20
      • 2016-12-27
      • 2019-01-17
      • 2023-04-09
      • 1970-01-01
      • 2016-12-29
      • 2012-04-15
      • 1970-01-01
      • 2011-08-06
      相关资源
      最近更新 更多