本文介绍运行MPI作业的方法。
Hyper MPI支持的集合操作包含Allreduce、Bcast、Barrier、Alltoallv、Allgatherv、Gatherv和Scatterv。Hyper MPI支持如下算法模式。
指定算法模式的示例如下:
mpirun -np 16 -N 2 --hostfile hf --mca coll ^ucg test_case
Hyper MPI默认对业务进程按照core的策略进行绑核,如果业务进程为多线程程序,为保障线程的正常调度,需要根据业务线程规模手动修改绑核配置,例如:
rank 1={ip2} slot=0-7
上述规则表示将MPI的0号任务绑定在ip1节点的0-7号CPU核上;将MPI的1号任务绑定在ip2节点的0-7号CPU核上。
运行命令示例如下:
mpirun --rankfile rf test_case
--rankfile配置项无法与--hostfile或-N选项同时使用。
mpirun -np 2 -N 1 --hostfile hf --mca hwloc_base_binding_policy numa test_case
Hyper MPI在默认情况下根据包长、每个节点的进程数(PPN)和节点数三个参数选择算法,在使用时直接运行mpirun命令即可,无需添加额外参数。
运行命令示例如下:
mpirun -np 16 -N 2 --hostfile hf test_case
以Allreduce的算法参数UCG_PLANC_UCX_ALLREDUCE_ATTR为例进行介绍。通过指定算法运行MPI作业的命令参数请参见指定算法支持的命令参数。
-x UCG_PLANC_UCX_ALLREDUCE_ATTR=I:id[S:scoreR:start-end]
export UCG_PLANC_UCX_ALLREDUCE_ATTR=I:id[S:scoreR:start-end]
具体请参见https://www.open-mpi.org/doc/current/man1/mpirun.1.php。
Hyper MPI命令参数 |
取值 |
参数说明 |
---|---|---|
-x UCG_PLANC_UCX_BCAST_ATTR= |
|
可选参数,Bcast的算法参数。 示例: -x UCG_PLANC_UCX_BCAST_ATTR=I:4 |
-x UCG_PLANC_UCX_ALLREDUCE_ATTR= |
|
可选参数,Allreduce的算法参数。 示例: -x UCG_PLANC_UCX_ALLREDUCE_ATTR=I:7 |
-x UCG_PLANC_UCX_BARRIER_ATTR= |
|
可选参数,Barrier的算法参数。 示例: -x UCG_PLANC_UCX_BARRIER_ATTR=I:1 |
-x UCG_PLANC_UCX_ALLTOALLV_ATTR= |
|
可选参数,Alltoallv的算法参数。 示例: -x UCG_PLANC_UCX_ ALLTOALLV_ATTR=I:1 |
-x UCG_PLANC_UCX_ALLGATHERV_ATTR= |
|
可选参数,Allgatherv的算法参数。 示例: -x UCG_PLANC_UCX_ ALLGATHERV_ATTR=I:3 |
-x UCG_PLANC_UCX_SCATTERV_ATTR= |
|
可选参数,Scatterv的算法参数。 示例: -x UCG_PLANC_UCX_ SCATTERV_ATTR=I:1 |
-x UCG_PLANC_UCX_GATHERV_ATTR= |
|
可选参数,Gatherv的算法参数。 示例: -x UCG_PLANC_UCX_ GATHERV_ATTR=I:1 |
-x UCG_PLANC_STARS_BCAST_ATTR= |
|
可选参数,Bcast的卸载算法参数。 示例: -x UCG_PLANC_STARS_ BCAST_ATTR=I:1 |
-x UCG_PLANC_STARS_ALLGATHERV_ATTR= |
|
可选参数,Allgatherv的卸载算法参数。 示例: -x UCG_PLANC_STARS_ ALLGATHERV_ATTR=I:1 |
-x UCG_PLANC_STARS_SCATTERV_ATTR= |
|
可选参数,Scatterv的卸载算法参数。 示例: -x UCG_PLANC_STARS_ SCATTERV_ATTR=I:1 |
-x UCG_PLANC_STARS_ALLTOALLV_ATTR= |
|
可选参数,Alltoallv的卸载算法参数。 示例: -x UCG_PLANC_STARS_ ALLTOALLV_ATTR=I:1 |
-x UCG_PLANC_STARS_BARRIER_ATTR= |
|
可选参数,Barrier的卸载算法参数。 示例: -x UCG_PLANC_STARS_ BARRIER_ATTR=I:1 |
-x UCG_PLANC_UCX_IBCAST_ATTR= |
|
可选参数,IBcast的算法参数。 示例: -x UCG_PLANC_UCX_IBCAST_ATTR=I:4 |
-x UCG_PLANC_UCX_IALLREDUCE_ATTR= |
|
可选参数,IAllreduce的算法参数。 示例: -x UCG_PLANC_UCX_IALLREDUCE_ATTR=I:7 |
-x UCG_PLANC_UCX_IBARRIER_ATTR= |
|
可选参数,IBarrier的算法参数。 示例: -x UCG_PLANC_UCX_IBARRIER_ATTR=I:1 |
-x UCG_PLANC_UCX_IALLTOALLV_ATTR= |
|
可选参数,IAlltoallv的算法参数。 示例: -x UCG_PLANC_UCX_ IALLTOALLV_ATTR=I:1 |
-x UCG_PLANC_UCX_IALLGATHERV_ATTR= |
|
可选参数,IAllgatherv的算法参数。 示例: -x UCG_PLANC_UCX_ IALLGATHERV_ATTR=I:3 |
-x UCG_PLANC_UCX_ISCATTERV_ATTR= |
|
可选参数,IScatterv的算法参数。 示例: -x UCG_PLANC_UCX_ ISCATTERV_ATTR=I:1 |
-x UCG_PLANC_UCX_IGATHERV_ATTR= |
|
可选参数,IGatherv的算法参数。 示例: -x UCG_PLANC_UCX_ IGATHERV_ATTR=I:1 |
-x UCG_PLANC_STARS_IBCAST_ATTR= |
|
可选参数,IBcast的卸载算法参数。 示例: -x UCG_PLANC_STARS_ IBCAST_ATTR=I:1 |
-x UCG_PLANC_STARS_IALLGATHERV_ATTR= |
|
可选参数,IAllgatherv的卸载算法参数。 示例: -x UCG_PLANC_STARS_ IALLGATHERV_ATTR=I:1 |
-x UCG_PLANC_STARS_ISCATTERV_ATTR= |
|
可选参数,IScatterv的卸载算法参数。 示例: -x UCG_PLANC_STARS_ ISCATTERV_ATTR=I:1 |
-x UCG_PLANC_STARS_IALLTOALLV_ATTR= |
|
可选参数,IAlltoallv的卸载算法参数。 示例: -x UCG_PLANC_STARS_ IALLTOALLV_ATTR=I:1 |
-x UCG_PLANC_STARS_IBARRIER_ATTR= |
|
可选参数,IBarrier的卸载算法参数。 示例: -x UCG_PLANC_STARS_ IBARRIER_ATTR=I:1 |