指定算法说明
以下算法序号对应的算法内容请参见算法地图。
关于Allreduce指定算法的说明
- 在选用算法13、14时,为保证进程数在Socket上平均分布,需要加上以下选项,命令如下:
- 在选用算法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值参数值,寻找最优参数值,从而获得最佳性能。命令示例如下:
- 在选用算法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 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值参数值,寻找最优参数值,从而获得最佳性能。命令示例如下:
- 在选用算法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