Coll模式

Coll模式下使用Hyper MPI的hucx功能,使用时不必加“--mca coll ^ucx”参数。Coll模式目前支持三种MPI集合操作:MPI_Allreduce、MPI_Bcast和MPI_Barrier。

Coll模式分默认算法和指定算法两种模式:

默认算法模式

Hyper MPI在默认情况下根据包长进行算法选择,在使用时直接运行mpirun命令即可,不用添加额外参数。

该配置下的Hyper MPI稳定性好,但性能较指定算法稍差。运行命令示例如下:

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

  • -np:所有节点总进程数,计算方式-N*节点数。
  • -N:每个节点的进程数。
  • hostfile:进程均匀分布时,用来导入其他节点的地址信息,使进程可以分配到此节点。

指定算法模式

通过设置环境变量的方式来选择对应的算法,比如:

方法1:export UCX_BUILTIN_ALLREDUCE_ALGORITHM=n

方法2:mpirun -x UCX_BUILTIN_ALLREDUCE_ALGORITHM=n

  • UCX_BUILTIN_ALLREDUCE_ALGORITHM:Allreduce的算法参数。
  • n:表示对应算法的编号。如果算法选择的数值不在有效范围内,则会打印出警告提示,并且执行默认算法。

算法编号与算法对应关系参考地图如表1表2表3所示。

表1 MPI_Allreduce编号与算法对应关系参考算法地图

算法序号

算法内容

1

Recursive

2

Node-aware Recursive+Binomial

3

Socket-aware Recursive+Binomial

4

Ring

5

Node-aware Recursive+K-nomial

6

Socket-aware Recurisve+K-nomial

7

Node-aware K-nomial+K-nominal

8

Socket-aware K-nominal+K-nominal

MPI_Allreduce对于不连续的数据类型只支持算法1。

表2 MPI_Bcast编号与算法对应关系参考算法地图

算法序号

算法内容

1

Binomial tree

2

Node-aware Binomial tree+Binomial tree

3

Node-aware K-nomial tree+Binomial tree

4

Node-aware K-nomial tree+K-nomial tree

表3 MPI_Barrier编号与算法对应关系参考算法地图

算法序号

算法内容

1

Recursive

2

Node-aware Recursive+Binomial

3

Socket-aware Recursive+Binomial

4

Node-aware Recursive+K-nomial

5

Socket-aware Recurisve+K-nomial

6

Node-aware K-nomial+K-nominal

7

Socket-aware K-nominal+K-nominal

Hyper MPI兼容Open MPI的命令参数,详情请参见https://www.open-mpi.org/doc/current/man1/mpirun.1.phpHyper MPI新增命令参数说明参见表4

表4 Hyper MPI新增命令参数

参数

参数含义

-x BMTREE_DEGREE_INTER_FANOUT

K叉树节点间扇出值

-x BMTREE_DEGREE_INTER_FANIN

K叉树节点间扇入值

-x BMTREE_DEGREE_INTRA_FANOUT

K叉树节点内扇出值

-x BMTREE_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 MAX_MSG_LIST_SIZE=

消息进程函数最大循环次数

-x BCOPY_TO_ZCOPY_OPT=

bcopy到zcopy之间的优化开关

-x SHORT_MAX_TX_SIZE=

使用小包的最大发送限制

-x BCOPY_MAX_TX_SIZE=

使用bcopy包的最大发送限制

-x LARGE_DATATYPE_THRESHOLD=

超大数据类型阈值

--mca coll_ucx_enable_topo_map

使能拓扑地图

--mca coll_ucx_num_disconnect

断开连接的并行进程数

--mca coll_ucx_priority

UCX模块的优先级

--mca coll_ucx_verbosity

UCX组件的日志详细程度