指定算法说明
关于MPI_Allreduce指定算法的说明
- 在选用算法3、6、8时,需保证进程数在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
为提高性能,也可加入以下选项:
--bind-to core -x UCX_TLS=sm,rc_x
关于MPI_Bcast指定算法的说明
- 在选用算法3时,因为节点间K-nomial算法,需要加上调节K值的参数,命令示例如下:
- 在选用算法4时,因为节点内与节点间都采用了K-nomial算法,需要加上两个调节K值的参数,命令示例如下:
-x UCX_BUILTIN_DEGREE_INTER_FANOUT=7
-x UCX_BUILTIN_DEGREE_INTRA_FANOUT=3
为提高性能,也可加入以下选项:
--bind-to core –x UCX_TLS=sm,rc_x
综上,在调用MPI_Bcast时,推荐选用算法3,其中K值需根据具体的节点及ppn数目调节,运行命令示例如下(鲲鹏芯片):
mpirun -np 16 -N 2 --hostfile hf --mca btl ^vader,tcp,openib --bind-to core -x UCX_TLS=sm,rc_x -x UCX_BUILTIN_BCAST_ALGORITHM=3 -x UCX_BUILTIN_DEGREE_INTER_FANOUT=7 test_case
关于MPI_Barrier指定算法的说明
从表3可知,Barrier的算法是Allreduce算法的子集,因此可参考MPI_Allreduce指定算法说明部分,此处不再赘述。
父主题: 集合操作算法选择说明