Coll模式
Coll模式下使用Hyper MPI的HUCX功能,使用时不必加--mca coll ^ucx参数。Coll模式目前支持三四种MPI集合操作:MPI_Allreduce、MPI_Bcast、MPI_Barrier和MPI_Alltoallv。
Coll模式分默认算法和指定算法两种模式:
- 默认算法实现了基于包长、PPN、节点数三个参数的算法自动选择功能,即根据不同的包长、PPN、节点数选择不同的算法。
PPN代表每个节点的进程数。
- 指定算法模式则需要利用命令行参数进行特定算法的指定。
默认算法模式
Hyper MPI在默认情况下根据包长、PPN、节点数三个参数进行算法选择,在使用时直接运行mpirun命令即可,不用添加额外参数。
- MPI_Allreduce和MPI_Bcast集合操作默认算法根据包长、PPN、节点数三个参数进行选择。
- MPI_Barrier集合操作默认算法根据PPN和节点数进行选择。
- MPI_Alltoallv集合操作所采用的默认算法:Plummer。
运行命令示例如下:
mpirun -np 16 -N 2 --hostfile hf test_case
指定算法模式
- 方法1:通过命令行参数指定算法。
- 使用PuTTY工具,以Hyper MPI普通用户,如“hmpi_user”登录作业执行节点。
- 在mpirun命令中增加如下参数。
-x UCX_BUILTIN_ALLREDUCE_ALGORITHM=n
- 方法2:通过设置环境变量的方式来选择对应的算法。

- UCX_BUILTIN_ALLREDUCE_ALGORITHM:MPI_Allreduce的算法参数,其他可选参数请参考表5。
- n:表示对应算法的序号。如果算法选择的数值不在有效范围内,则会执行默认算法。
算法序号与算法对应关系参考地图如表1、表2、表3和表4所示。
算法序号 |
算法内容 |
备注 |
---|---|---|
1 |
Recursive |
完成源码安装Hyper MPI后即可使用 |
2 |
Node-aware Recursive+Binomial |
完成源码安装Hyper MPI后即可使用 |
3 |
Socket-aware Recursive+Binomial |
完成源码安装Hyper MPI后即可使用 |
4 |
Ring |
完成源码安装Hyper MPI后即可使用 |
5 |
Node-aware Recursive+K-nomial |
完成源码安装Hyper MPI后即可使用 |
6 |
Socket-aware Recursive+K-nomial |
完成源码安装Hyper MPI后即可使用 |
7 |
Node-aware K-nomial+K-nominal |
完成源码安装Hyper MPI后即可使用 |
8 |
Socket-aware K-nominal+K-nominal |
完成源码安装Hyper MPI后即可使用 |
9 |
Node-aware INC |
完成源码安装Hyper MPI后即可使用 |
10 |
Socket-aware INC |
完成源码安装Hyper MPI后即可使用 |
11 |
NAP |
完成源码安装Hyper MPI和安装Hyper MPI闭源组件后即可使用 |
12 |
Rabenseifner |
完成源码安装Hyper MPI后即可使用 |
13 |
Node-aware Rabenseifner |
完成源码安装Hyper MPI后即可使用 |
14 |
Socket-aware Rabenseifner |
完成源码安装Hyper MPI后即可使用 |

MPI_Allreduce对于不连续的数据类型只支持算法1。
算法3,5,6,7,8,11,13,14要求进程分布连续均衡。
算法3,5,6,7,8,13,14要求进程分布连续均衡。
算法序号 |
算法内容 |
备注 |
---|---|---|
1 |
Binomial tree |
完成源码安装Hyper MPI后即可使用 |
2 |
Node-aware Binomial+Binomial |
完成源码安装Hyper MPI后即可使用 |
3 |
Node-aware K-nomial+Binomial |
完成源码安装Hyper MPI后即可使用 |
4 |
Node-aware K-nomial+K-nomial |
完成源码安装Hyper MPI后即可使用 |
5 |
Node-aware INC |
完成源码安装Hyper MPI后即可使用 |

- MPI_Bcast对于不连续的数据类型只支持算法1,2,3,4。
- 算法3,4要求进程分布连续均衡。
算法序号 |
算法内容 |
备注 |
---|---|---|
1 |
Recursive |
完成源码安装Hyper MPI后即可使用 |
2 |
Node-aware Recursive+Binomial |
完成源码安装Hyper MPI后即可使用 |
3 |
Socket-aware Recursive+Binomial |
完成源码安装Hyper MPI后即可使用 |
4 |
Node-aware Recursive+K-nomial |
完成源码安装Hyper MPI后即可使用 |
5 |
Socket-aware Recursive+K-nomial |
完成源码安装Hyper MPI后即可使用 |
6 |
Node-aware K-nomial+K-nominal |
完成源码安装Hyper MPI后即可使用 |
7 |
Socket-aware K-nominal+K-nominal |
完成源码安装Hyper MPI后即可使用 |
8 |
Node-aware INC |
完成源码安装Hyper MPI后即可使用 |
9 |
Socket-aware INC |
完成源码安装Hyper MPI后即可使用 |
10 |
NAP |
完成源码安装Hyper MPI和安装Hyper MPI闭源组件后即可使用 |

MPI_Barrier算法3,4,5,6,7,10要求进程分布连续均衡。
MPI_Barrier算法3,4,5,6,7要求进程分布连续均衡。
算法序号 |
算法内容 |
备注 |
---|---|---|
1 |
Ladd |
完成源码安装Hyper MPI和安装Hyper MPI闭源组件后即可使用 |
2 |
Plummer |
完成源码安装Hyper MPI和安装Hyper MPI闭源组件后即可使用 |

MPI_Alltoallv算法2要求进程分布连续均衡且每个节点进程数一致。
Hyper MPI兼容Open MPI的命令参数,详情请参见https://www.open-mpi.org/doc/current/man1/mpirun.1.php;Hyper MPI新增命令参数说明参见表5。
参数 |
参数含义 |
---|---|
-x UCX_BUILTIN_DEGREE_INTER_FANOUT= |
K叉树节点间扇出值。 |
-x UCX_BUILTIN_DEGREE_INTER_FANIN= |
K叉树节点间扇入值。 |
-x UCX_BUILTIN_DEGREE_INTRA_FANOUT= |
K叉树节点内扇出值。 |
-x UCX_BUILTIN_DEGREE_INTRA_FANIN= |
K叉树节点内扇入值。 |
-x UCX_BUILTIN_BCAST_ALGORITHM= |
MPI_Bcast的算法参数,“=”号后面的数字代表对应的算法序号,例如:-x UCX_BUILTIN_BCAST_ALGORITHM=2,就代表Bcast的算法2。 |
-x UCX_BUILTIN_ALLREDUCE_ALGORITHM= |
MPI_Allreduce的算法参数,“=”号后面的数字代表对应的算法序号,例如:-x UCX_BUILTIN_ALLREDUCE_ALGORITHM=7,就代表MPI_Allreduce的算法7。 |
-x UCX_BUILTIN_REDUCE_CONSISTENCY= |
在满足浮点精度前提下,保证MPI_Allreduce相同算法若干次计算结果的一致性参数。“yes”代表开启计算结果的一致性功能;默认值为“no”,代表关闭计算结果的一致性功能。 |
-x UCX_BUILTIN_BARRIER_ALGORITHM= |
MPI_Barrier的算法参数,“=”号后面的数字代表对应的算法序号,例如:-x UCX_BUILTIN_BARRIER_ALGORITHM=4,就代表MPI_Barrier的算法4。 |
-x UCX_BUILTIN_ALLTOALLV_ALGORITHM= |
MPI_Alltoallv的算法参数,“=”号后面的数字代表对应的算法序号,例如:-x UCX_BUILTIN_ALLTOALLV_ALGORITHM=1,就代表MPI_Alltoallv的算法1。 |
-x UCX_BUILTIN_LADD_THEROTTLED_FACTOR= |
LADD算法,控制每个step的进程数,默认是总的进程数减1。 |
-x UCX_BUILTIN_MAX_MSG_LIST_SIZE= |
消息进程函数最大循环次数,默认值40。 |
-x UCX_BUILTIN_BCOPY_TO_ZCOPY_OPT= |
bcopy到zcopy之间的优化开关,值为1是表示开启,值为0时表示关闭,默认开启。 |
-x UCX_BUILTIN_BCOPY_MAX_TX_SIZE= |
使用bcopy包的最大发送字节数限制,默认值32786,表示数据包大小超过32786后将不使用bcopy包。 |
-x UCX_BUILTIN_LARGE_DATATYPE_THRESHOLD= |
超大数据类型阈值,默认值32字节,当单个数据类型字节数超过32时,将该数据类型识别为超大数据类型。 |
-x UCX_BUILTIN_NUM_NAP_GROUP= |
NAP算法节点内部划分参与交换运算的组数,默认是1。 |
-x UCX_BUILTIN_NAP_INIT_ALLREDUCE_METHOD= |
NAP算法第一步MPI_Allreduce操作方法,0表示recursive算法,1表示树形算法,默认选择recursive算法。 |
-x UCX_BUILTIN_NAP_FINAL_ALLREDUCE_METHOD= |
NAP算法最后一步MPI_Allreduce操作方法,0表示recursive算法,1表示树形算法,默认选择recursive算法。 |
-x UCX_BUILTIN_INTRA_TREE_TYPE= |
NAP算法节点内树形算法选择,0表示二叉树,1表示K叉树,默认选择二叉树。 |
--mca coll_ucx_enable_topo_map |
使能拓扑地图,参数值为0时为不使能拓扑地图,为1时使能拓扑地图,不加此命令为默认使能,例如:“--mca coll_ucx_enable_topo_map 0”为不使能拓扑地图。 |
--mca coll_ucx_num_disconnect |
断开连接的并行进程数,默认值0。 |
--mca coll_ucx_priority |
MPI调用UCX模块的优先级,值越大,优先级越高,默认值91,例如:--mca coll_ucx_priority 0,代表设置UCX优先级为0。 |
--mca coll_ucx_verbosity |
UCX组件的日志详细程度,默认值0。 |
--mca topo_tpm_enable |
“topo_tpm_enable”参数后输入1代表开启进程排布;输入0代表关闭进程排布,默认为关闭。 |