MPI_Scatter和MPI_Bcast之间的差异

时间:2015-01-03 08:48:43

标签: c++ mpi

任何人都可以解释MPI_ScatterMPI_Bcast之间的区别吗? (除了任何进程可以使用MPI_Scatter进行广播,只有root可以使用MPI_Bcast

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

2 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:8)

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

the illustration,