哪个allreduce算法用于OpenMPI(V2.0.2)中的大向量(200MB +)?

时间:2017-08-09 22:51:59

标签: algorithm mpi openmpi

目前,我正在尝试了解OpenMPI(版本2.0.2)中大型向量的MPI_Allreduce的详细信息。我已经学会了所有减少算法,如二叉树,递归加倍,递归减半和加倍,二进制块和环算法。他们中的大多数是基于reduce-scatter然后allgather。

但我仍然想知道在OpenMPI(v2.0.2)中哪个allreduce算法用于大型向量(200MB +)。提供有关它的详细信息会很棒。

真的很感激:))

1 个答案:

答案 0 :(得分:3)

答案在代码中,请参阅https://github.com/open-mpi/ompi/blob/v2.0.2/ompi/mca/coll/tuned/coll_tuned_decision_fixed.c

中的ompi_coll_tuned_allreduce_intra_dec_fixed 简短的回答,这取决于 更长的答案,这取决于您的通信器大小,您正在使用的数据类型/计数(例如,大型向量的一个派生数据类型,或许多预定义的数据类型)以及您的运算符是否可交换。

您也可以使用mpirun --mca coll_base_verbose 1 ...询问Open MPI(可以说,我认为您需要使用--enable-debug配置Open MPI才能使其正常工作)