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

Which allreduce algorithm is used for large vectors (200MB+) in OpenMPI (V2.0.2)?

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

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

非常感谢:)

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

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

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