鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

运行MPI作业(Coll模式)

背景信息

Coll模式支持的MPI集合操作包含Allreduce、Bcast、Barrier、Allgatherv和Scatterv。Coll模式包含默认算法和指定算法两种模式,Hyper MPI默认使用Coll模式运行MPI作业,即在运行作业时不需要添加--mca coll ^ucg参数。

如果需要采用Open MPI原有的集合通信方式运行MPI作业,则需要在运行作业时添加--mca coll ^ucg参数。示例如下:

mpirun -np 16 -N 2 --hostfile hf --mca coll ^ucg test_case

  • -np:表示所有节点总进程数。计算公式=单节点的进程数量(N)*节点数量。
  • -N:表示每个节点的进程数。
  • --hostfile:表示进程运行节点的配置文件。
  • test_case:表示mpicc编译后的二进制文件。

通过默认算法运行MPI作业

Hyper MPI在默认情况下根据包长、每个节点的进程数(PPN)和节点数三个参数选择算法,在使用时直接运行mpirun命令即可,不用添加额外参数。

  • Allreduce、Bcast、Allgatherv和Scatterv集合操作默认算法根据包长、PPN和节点数三个参数进行选择。
  • Barrier集合操作默认算法根据PPN和节点数进行选择。

运行命令示例如下:

mpirun -np 16 -N 2 --hostfile hf test_case

在一些不支持场景下,算法会发生切换,参见特性支持与功能回退说明

通过指定算法运行MPI作业

以Allreduce的算法参数UCG_PLANC_UCX_ALLREDUCE_ATTR为例进行介绍。通过指定算法运行MPI作业的命令参数请参见指定算法支持的命令参数

  • 方法一:通过命令行参数指定算法
    1. 使用PuTTY工具,以Hyper MPI普通用户(例如“hmpi_user”)登录至作业执行节点。
    2. mpirun命令中增加如下参数。

      -x UCG_PLANC_UCX_ALLREDUCE_ATTR=I:nS:200R:0-

  • 方法二:通过设置环境变量的方式来选择对应的算法
    1. 使用PuTTY工具,以Hyper MPI普通用户(例如“hmpi_user”)登录至作业执行节点。
    2. 将以下命令写入所有节点的“~/.bashrc”中。

      export UCG_PLANC_UCX_ALLREDUCE_ATTR=I:nS:200R:0-

      • I:表示算法编号。
      • n:表示对应算法的序号。如果算法选择的数值不在有效范围内,则会执行默认算法。
      • S:表示算法分数(默认为INT_MAX),可以不指定。
      • R:表示算法包大小范围(默认为[0,max)),可以不指定。
    3. 执行以下命令,使环境变量生效。

      source ~/.bashrc

    4. 不再需要该环境变量时,需执行以下操作。
      1. 删除“~/.bashrc”中已写入的“export UCG_PLANC_UCX_ALLREDUCE_ATTR=I:nS:200R:0-”命令。
      2. 执行以下命令,删除已生效的环境变量。

        unset UCG_PLANC_UCX _ALLREDUCE_ ATTR

指定算法支持的命令参数

  • Hyper MPI兼容Open MPI的命令参数

    具体请参见https://www.open-mpi.org/doc/current/man1/mpirun.1.php

  • Hyper MPI新增的命令参数
    表1中为运行MPI作业时的常用命令参数,更多命令参数请参见命令参数
    表1 指定算法支持的常用命令参数

    Hyper MPI 1.3.*命令参数

    取值

    参数说明

    -x UCG_PLANC_UCX_BCAST_ATTR=

    • 取值类型:string,格式为I:id[S:scoreR:start-end]。
    • 取值范围
      • id:必填,1~10。
      • score:选填,任意自然数。
      • start:选填,任意自然数。
      • end:选填,任意自然数。
    • 默认值:无固定值,根据生效规则调节赋值。

    可选参数,Bcast的算法参数。

    示例:

    -x UCG_PLANC_UCX_BCAST_ATTR=I:4

    -x UCG_PLANC_UCX_ALLREDUCE_ATTR=

    • 取值类型:string,格式为I:id[S:scoreR:start-end]。
    • 取值范围
      • id:必填,1~14。
      • score:选填,任意自然数。
      • start:选填,任意自然数。
      • end:选填,任意自然数。
    • 默认值:无固定值,根据生效规则调节赋值。

    可选参数,Allreduce的算法参数。

    示例:

    -x UCG_PLANC_UCX_ALLREDUCE_ATTR=I:7

    -x UCG_PLANC_UCX_BARRIER_ATTR=

    • 取值类型:string,格式为I:id[S:scoreR:start-end]。
    • 取值范围
      • id:必填,1~10。
      • score:选填,任意自然数。
      • start:选填,任意自然数。
      • end:选填,任意自然数。
    • 默认值:无固定值,根据生效规则调节赋值。

    可选参数,Barrier的算法参数。

    示例:

    -x UCG_PLANC_UCX_BARRIER_ATTR=I:1

    -x UCG_PLANC_UCX_ALLGATHERV_ATTR=

    • 取值类型:string,格式为I:id[S:scoreR:start-end]。
    • 取值范围
      • id:必填,1~5。
      • score:选填,任意自然数。
      • start:选填,任意自然数。
      • end:选填,任意自然数。
    • 默认值:无固定值,根据生效规则调节赋值。

    可选参数,Allgatherv的算法参数。

    示例:

    -x UCG_PLANC_UCX_ ALLGATHERV_ATTR=I:3

    -x UCG_PLANC_UCX_SCATTERV_ATTR=

    • 取值类型:string,格式为I:id[S:scoreR:start-end]。
    • 取值范围
      • id:必填,1或2。
      • score:选填,任意自然数。
      • start:选填,任意自然数。
      • end:选填,任意自然数。
    • 默认值:无固定值,根据生效规则调节赋值。

    可选参数,Scatterv的算法参数。

    示例:

    -x UCG_PLANC_UCX_ SCATTERV_ATTR=I:1