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

指定算法说明

关于MPI_Allreduce指定算法的说明

  • 在选用算法3、6、8、14时,需保证进程数在socket上平均分布(Socket-aware类算法不支持socket间进程数不均衡),需要加上以下选项,命令如下:

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

  • 在选用算法5、6时,因节点内为K-nomial算法,需要引入调节K-nomial tree结构的K值参数,示例命令如下:

    -x UCX_BUILTIN_DEGREE_INTRA_FANOUT=3

    -x UCX_BUILTIN_DEGREE_INTRA_FANIN=8

  • 在选用算法7、8时,因节点内与节点间都采用K-nomial算法,需要引入调节K-nomial tree结构的K值参数,示例命令如下:

    -x UCX_BUILTIN_DEGREE_INTER_FANOUT=7 -x UCX_BUILTIN_DEGREE_INTER_FANIN=7

    -x UCX_BUILTIN_DEGREE_INTRA_FANOUT=3 -x UCX_BUILTIN_DEGREE_INTRA_FANIN=8

  • 在满足浮点精度前提下,如需要保证相同算法若干次计算结果的一致性,可打开计算结果一致性参数开关进行处理(默认为关闭“no”),示例命令如下:

    -x UCX_BUILTIN_REDUCE_CONSISTENCY=yes

为提高性能,也可加入以下选项:

-x UCX_TLS=sm,rc_x

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

mpirun -np 16 -N 2 --hostfile hf8 --mca btl ^vader,tcp,openib -x UCX_TLS=sm,rc_x -x UCX_BUILTIN_ALLREDUCE_ALGORITHM=n test_case

关于MPI_Bcast指定算法的说明

  • 在选用算法3时,因为节点间K-nomial算法,需要加上调节K值的参数,命令示例如下:

    -x UCX_BUILTIN_DEGREE_INTER_FANOUT=7

  • 在选用算法4时,因为节点内与节点间都采用了K-nomial算法,需要加上两个调节K值的参数,命令示例如下:

    -x UCX_BUILTIN_DEGREE_INTER_FANOUT=7

    -x UCX_BUILTIN_DEGREE_INTRA_FANOUT=3

为提高性能,也可加入以下选项:

–x UCX_TLS=sm,rc_x

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

mpirun -np 16 -N 2 --hostfile hf8 --mca btl ^vader,tcp,openib -x UCX_TLS=sm,rc_x -x UCX_BUILTIN_BCAST_ALGORITHM=n test_case

关于MPI_Barrier指定算法的说明

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

关于MPI_Alltoallv指定算法的说明

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

-x UCX_BUILTIN_LADD_THEROTTLED_FACTOR=7

为提高性能,也可加入以下选项:

–x UCX_TLS=sm,rc_x

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

mpirun -np 16 -N 2 --hostfile hf8 --mca btl ^vader,tcp,openib -x UCX_TLS=sm,rc_x -x UCX_BUILTIN_ALLTOALLV_ALGORITHM=n test_case

关于NAP指定算法的说明

  • NAP算法目前只支持进程号连续且PPN均衡的情况,不支持进程号不连续或者PPN不均衡的情况,同时也不支持MPI_Allreduce非对易操作。
  • PPN= 1的场景,该情况下无法使用NAP算法,将切换到其他支持该场景的算法。
  • PPN大于节点数的场景,可以通过设置NAP group数量来实现,NAP group的数量目前仅支持2的幂次。
  • PPN小于节点数的场景,NAP算法默认支持节点数为2的幂次的情况。若节点数为非2的幂次的情况时,将切换到其他支持该场景的算法。