目前,我正在尝试了解OpenMPI(版本2.0.2)中大型向量的MPI_Allreduce的详细信息。我已经学会了所有减少算法,如二叉树,递归加倍,递归减半和加倍,二进制块和环算法。他们中的大多数是基于reduce-scatter然后allgather。
但我仍然想知道在OpenMPI(v2.0.2)中哪个allreduce算法用于大型向量(200MB +)。提供有关它的详细信息会很棒。
真的很感激:))
答案 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才能使其正常工作)