【问题标题】:Differences between MPI_Scatter and MPI_BcastMPI_Scatter 和 MPI_Bcast 的区别
【发布时间】:2015-03-01 10:24:48
【问题描述】:

谁能解释一下MPI_ScatterMPI_Bcast 之间的区别? (除了任何进程都可以使用MPI_Scatter进行广播并且只有root可以使用MPI_Bcast

在哪些情况下我应该使用第一个而不是另一个?

【问题讨论】:

    标签: c++ mpi


    【解决方案1】:

    MPI_Bcast() 向每个人发送相同的数据,而MPI_Scatter() 向每个进程发送输入数组的一部分。 MPI_Bcast()MPI_Reduce() 的反面,MPI_Scatter()MPI_Gather() 的反面。像this one 这样的小方案是不言自明的。

    MPI_Scatter()MPI_Bcast() 都有一个名为 int root 的参数来指定根进程。

    【讨论】:

    • 谢谢,很好理解。
    • 虽然MPI_SCATTER 确实是MPI_GATHER 的反面,但我不会将MPI_BCAST 称为MPI_REDUCE 的反面。
    • 对,MPI_Reduce()可以将很多不同ways中的数据块组合起来,比如MPI_SUM或者MPI_MAXMPI_Bcast()给每个进程提供相同的数据块,不需要途中的任何操作。
    【解决方案2】:

    MPI_Bcast 在根进程(红色框)获取单个数据元素并将其复制到所有其他进程。 MPI_Scatter 获取一个元素数组,并按照进程等级的顺序分配元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 2015-09-06
      • 2013-11-30
      • 2013-10-24
      • 2016-09-09
      相关资源
      最近更新 更多