Coll模式
Coll模式下使用Hyper MPI的hucx功能,使用时不必加--mca coll ^ucx参数。Coll模式目前支持三种MPI集合操作:MPI_Allreduce、MPI_Bcast和MPI_Barrier。
Coll模式分默认算法和指定算法两种模式:
- 默认算法实现了基于包长的算法自动选择功能,即根据不同的包长选择不同的算法。
- 指定算法模式则需要利用命令行参数进行特定算法的指定。
默认算法模式
Hyper MPI在默认情况下根据包长进行算法选择,在使用时直接运行mpirun命令即可,不用添加额外参数。
- MPI_Allreduce集合操作所采用的包长大于等于16384 Byte的默认算法:Ring。
- MPI_Bcast集合操作所采用的默认算法:Node-aware K-nomial+K-nominal。
运行命令示例如下:
mpirun -np 16 -N 2 --hostfile hf test_case
指定算法模式
- 方法2:通过设置环境变量的方式来选择对应的算法。
算法序号 |
算法内容 |
---|---|
1 |
Recursive |
2 |
Node-aware Recursive+Binomial |
3 |
Socket-aware Recursive+Binomial |
4 |
Ring |
5 |
Node-aware Recursive+K-nomial |
6 |
Socket-aware Recursive+K-nomial |
7 |
Node-aware K-nomial+K-nominal |
8 |
Socket-aware K-nominal+K-nominal |

MPI_Allreduce对于不连续的数据类型只支持算法1。
算法3,5,6,7,8要求进程分布连续均衡。
算法序号 |
算法内容 |
---|---|
1 |
Binomial tree |
2 |
Node-aware Binomial+Binomial |
3 |
Node-aware K-nomial+Binomial |
4 |
Node-aware K-nomial+K-nomial |

- MPI_bcast对于不连续的数据类型只支持算法1,2,3,4。
- 算法3,4要求进程分布连续均衡。
算法序号 |
算法内容 |
---|---|
1 |
Recursive |
2 |
Node-aware Recursive+Binomial |
3 |
Socket-aware Recursive+Binomial |
4 |
Node-aware Recursive+K-nomial |
5 |
Socket-aware Recursive+K-nomial |
6 |
Node-aware K-nomial+K-nominal |
7 |
Socket-aware K-nominal+K-nominal |

MPI_barrier算法3,4,5,6,7要求进程分布连续均衡。
Hyper MPI兼容Open MPI的命令参数,详情请参见https://www.open-mpi.org/doc/current/man1/mpirun.1.php;Hyper MPI新增命令参数说明参见表4。
参数 |
参数含义 |
---|---|
-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= |
Bcast的算法参数,“=”号后面的数字代表对应的算法编号,例如:-x UCX_BUILTIN_BCAST_ALGORITHM=1,就代表Bcast的算法1。 |
-x UCX_BUILTIN_ALLREDUCE_ALGORITHM= |
Allreduce的算法参数,“=”号后面的数字代表对应的算法编号,例如:-x UCX_BUILTIN_ALLREDUCE_ALGORITHM=7,就代表Allreduce的算法7。 |
-x UCX_BUILTIN_BARRIER_ALGORITHM= |
Barrier的算法参数,“=”号后面的数字代表对应的算法编号,例如:-x UCX_BUILTIN_BARRIER_ALGORITHM=4,就代表Barrier的算法4。 |
-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时,将该数据类型识别为超大数据类型。 |
--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。 |