中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

指定算法说明

以下算法序号对应的算法内容请参见算法地图

关于Allreduce指定算法的说明

  • 在选用算法13、14时,为保证进程数在Socket上平均分布,需要加上以下选项,命令如下:

    --map-by-socket --rank-by-core

  • 在选用算法5、6时,节点内采用了K-nomial算法,可通过调节K-nomial tree结构的K值参数值,寻找最优参数值,从而获得最佳性能。示例命令如下:

    -x UCG_PLANC_UCX_ALLREDUCE_FANOUT_INTRA_DEGREE=3

    -x UCG_PLANC_UCX_ALLREDUCE_FANIN_INTRA_DEGREE=8

  • 在选用算法7、8时,节点内与节点间都采用了K-nomial算法,可通过调节K-nomial tree结构的K值参数值,寻找最优参数值,从而获得最佳性能。示例命令如下:

    -x UCG_PLANC_UCX_ALLREDUCE_FANOUT_INTER_DEGREE=7 -x UCG_PLANC_UCX_ALLREDUCE_FANIN_INTER_DEGREE=7

    -x UCG_PLANC_UCX_ALLREDUCE_FANOUT_INTRA_DEGREE=3 -x UCG_PLANC_UCX_ALLREDUCE_FANIN_INTRA_DEGREE=8

为提高性能,也可加入以下选项,调整传输模式:

-x UCX_TLS=sm,rc_x

综上,在调用MPI_Allreduce和MPI_Iallreduce时运行命令示例如下(鲲鹏芯片):

mpirun -np 16 -N 2 --hostfile hf8 --mca btl ^vader,tcp,openib -x UCX_TLS=sm,rc_x -x UCG_PLANC_UCX_ALLREDUCE_ATTR=I:nS:200R:0- test_case

关于Bcast指定算法的说明

  • 在选用算法3时,节点间采用了K-nomial算法,可通过调节K值参数值,寻找最优参数值,从而获得最佳性能。命令示例如下:

    -x UCG_PLANC_UCX_BCAST_NA_KNTREE_INTER_DEGREE=7

  • 在选用算法4时,节点内与节点间都采用了K-nomial算法,可通过调节K值参数值,寻找最优参数值,从而获得最佳性能。命令示例如下:

    -x UCG_PLANC_UCX_BCAST_NA_KNTREE_INTER_DEGREE =7

    -x UCG_PLANC_UCX_BCAST_NA_KNTREE_INTRA_DEGREE=3

  • 在选用算法9时,可通过以下参数值调整ESBT算法中划分的块数,寻找最优参数值,从而获得最佳性能。默认值为0,表示auto。命令示例如下:

    -x UCG_PLANC_UCX_BCAST_ESBT_BLOCKS=3

为提高性能,也可加入以下选项,调整传输模式:

-x UCX_TLS=sm,rc_x

综上,在调用MPI_Bcast和MPI_Ibcast时运行命令示例如下(鲲鹏芯片):

mpirun -np 16 -N 2 --hostfile hf8 --mca btl ^vader,tcp,openib -x UCX_TLS=sm,rc_x -x UCG_PLANC_UCX_BCAST_ATTR=I:nS:200R:0- test_case

关于Barrier指定算法的说明

算法地图可知,Barrier的算法是Allreduce算法的子集,因此可参考Allreduce指定算法说明,此处不再赘述。

关于Alltoallv指定算法的说明

在选用算法1时,可通过调整以下参数值,寻找最优参数值,从而获得最佳性能。命令示例如下:

-x UCG_PLANC_UCX_ALLTOALLV_MIN_SEND_BATCH=7

-x UCG_PLANC_UCX_ALLTOALLV_MAX_SEND_BATCH=8

为提高性能,也可加入以下选项,调整传输模式:

-x UCX_TLS=sm,rc_x

综上,在调用MPI_Alltoallv和MPI_Ialltoallv时运行命令示例如下(鲲鹏芯片):

mpirun -np 16 -N 2 --hostfile hf8 --mca btl ^vader,tcp,openib -x UCX_TLS=sm,rc_x -x UCG_PLANC_UCX_ALLTOALLV_ATTR=I:nS:200R:0- test_case

关于Scatterv指定算法的说明

  • 在选用算法1时,可通过调整以下参数值,寻找最优参数值,从而获得最佳性能。命令示例如下:

    -x UCG_PLANC_UCX_SCATTERV_MIN_SEND_BATCH=7

    -x UCG_PLANC_UCX_SCATTERV_MAX_SEND_BATCH=8

  • 在选用算法2时,采用了K-nomial算法,可通过调整K值参数值,寻找最优参数值,从而获得最佳性能。命令示例如下:

    -x UCG_PLANC_UCX_ SCATTERV_KNTREE_DEGREE=3

  • 在选用算法3时,采用了Node-aware K-nomial tree算法,由于节点间和节点内通信都采用了K-nomial算法,可通过调整节点间和节点内通信的K值参数值,寻找最优参数值,从而获得最佳性能。命令示例如下:

    -x UCG_PLANC_UCX_ SCATTERV_NA_KNTREE_INTER_DEGREE=4

    -x UCG_PLANC_UCX_ SCATTERV_NA_KNTREE_INTRA_DEGREE=3

    • Scatterv操作的算法3在数据量较小的场景下性能较优,数据量大的场景下性能较差。
    • 由于Scatterv操作无法根据数据量的大小自动选择最优算法,建议在数据量较小的场景下使用算法3。

为提高性能,也可加入以下选项,调整传输模式:

-x UCX_TLS=sm,rc_x

综上,在调用MPI_Scatterv和MPI_Iscatterv时运行命令示例如下(鲲鹏芯片):

mpirun -np 16 -N 2 --hostfile hf8 --mca btl ^vader,tcp,openib -x UCX_TLS=sm,rc_x -x UCG_PLANC_UCX_SCATTERV_ATTR=I:nS:200R:0- test_case

关于Allgatherv指定算法的说明

为提高性能,可加入以下选项,调整传输模式:

-x UCX_TLS=sm,rc_x

综上,在调用MPI_Allgatherv和MPI_Iallgatherv时运行命令示例如下(鲲鹏芯片):

mpirun -np 16 -N 2 --hostfile hf8 --mca btl ^vader,tcp,openib -x UCX_TLS=sm,rc_x -x UCG_PLANC_UCX_ALLGATHERV_ATTR=I:nS:200R:0- test_case

关于Gatherv指定算法的说明

为提高性能,可加入以下选项,调整传输模式:

-x UCX_TLS=sm,rc_x

综上,在调用MPI_Gatherv和MPI_Igatherv时运行命令示例如下(鲲鹏芯片):

mpirun -np 16 -N 2 --hostfile hf8 --mca btl ^vader,tcp,openib -x UCX_TLS=sm,rc_x -x UCG_PLANC_UCX_GATHERV_ATTR=I:nS:200R:0- test_case