MPI_Scatter和MPI_Bcast之间的区别

18

请问有人能够解释一下 MPI_ScatterMPI_Bcast 的区别吗?(除了任何进程可以使用 MPI_Scatter 进行广播,只有根进程才能使用 MPI_Bcast 这个事实之外)

在什么情况下我应该使用其中一个而不是另一个呢?

2个回答

29

MPI_Bcast()将同样的数据发送给所有人,而MPI_Scatter()则向每个进程发送输入数组的一部分。MPI_Bcast()MPI_Reduce()相反,MPI_Scatter()MPI_Gather()相反。像这样的简单示意图已经说明了问题。

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


谢谢,非常易懂。 - Gil Peretz
7
虽然MPI_SCATTER确实是MPI_GATHER的相反操作,但我不会称MPI_BCASTMPI_REDUCE的相反操作。 - Hristo Iliev
2
对的,MPI_Reduce() 可以通过许多不同的方式来组合数据片段,例如 MPI_SUMMPI_MAX。而 MPI_Bcast() 则将同样的数据提供给每个进程,没有在途中进行任何操作。 - francis

15

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

the illustration,


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接