指定算法说明
关于MPI_Allreduce指定算法的说明
- 在选用算法3、6、8、14时,需保证进程数在socket上平均分布(Socket-aware类算法不支持socket间进程数不均衡),需要加上以下选项,命令如下:
- 在选用算法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_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值的参数,命令示例如下:
- 在选用算法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指定算法说明部分,此处不再赘述。