任何人都可以解释MPI_Scatter
和MPI_Bcast
之间的区别吗? (除了任何进程可以使用MPI_Scatter
进行广播,只有root可以使用MPI_Bcast
)
在哪些情况下我应该使用第一个而不是另一个?
答案 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获取一个元素数组,并按进程排名的顺序分配元素。