【问题标题】:Difference between All-to-All Reduction and All-Reduce in MPIMPI 中 All-to-All Reduction 和 All-Reduce 的区别
【发布时间】:2017-11-13 00:19:29
【问题描述】:

试图找出开放 MPI 中 All-to-All Reduction 和 All-Reduce 之间的区别。据我了解,All-to-One Reduction 从所有进程中获取一块m(整数、数组等),并将所有部分与运算符(最小值、最大值、总和等)组合在一起并存储它在选定的过程中。据此,我假设 All-to-All Reduction 是相同的,但产品存储在所有流程中,而不仅仅是一个流程。从this 文档看来,All-Reduce 基本上与 All-to-All Reduction 相同,这是对的还是我弄错了?

【问题讨论】:

    标签: mpi communication


    【解决方案1】:

    all-reduce (MPI_Allreduce) 是 reductionbroadcast (MPI_Reduce, MPI_Bcast) 的组合。他们可能称它为MPI_Reduce_Bcast。重要的是要注意 MPI 减少不会进行任何全局减少。因此,如果 5 个进程各有 10 个数字,则在 MPI_Reduce 之后,一个进程有 10 个数字。在MPI_Allreduce之后,所有5个进程都有相同的10个数字。

    相比之下,all-to-all reduction 执行 reductionscatter,因此称为MPI_Reduce_scatter[_block]。因此,如果您在 5 个进程上各有 10 个数字,则在 MPI_Reduce_scatter_block 之后,这 5 个进程各有 2 个数字。请注意,MPI 本身并不使用术语all-to-all reduction,这可能是由于误导性的歧义。

    【讨论】:

      猜你喜欢
      • 2021-08-11
      • 2016-06-29
      • 2014-09-27
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 2013-09-20
      相关资源
      最近更新 更多