运行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作业的命令参数请参见指定算法支持的命令参数。
- 方法一:通过命令行参数指定算法
- 使用PuTTY工具,以Hyper MPI普通用户(例如“hmpi_user”)登录至作业执行节点。
- 在mpirun命令中增加如下参数。
-x UCG_PLANC_UCX_ALLREDUCE_ATTR=I:nS:200R:0-
- 方法二:通过设置环境变量的方式来选择对应的算法
- 使用PuTTY工具,以Hyper MPI普通用户(例如“hmpi_user”)登录至作业执行节点。
- 将以下命令写入所有节点的“~/.bashrc”中。
export UCG_PLANC_UCX_ALLREDUCE_ATTR=I:nS:200R:0-
- I:表示算法编号。
- n:表示对应算法的序号。如果算法选择的数值不在有效范围内,则会执行默认算法。
- S:表示算法分数(默认为INT_MAX),可以不指定。
- R:表示算法包大小范围(默认为[0,max)),可以不指定。
- 执行以下命令,使环境变量生效。
- 不再需要该环境变量时,需执行以下操作。
指定算法支持的命令参数
- 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