MPI中全部减少和全部减少之间的差异

时间:2017-06-11 12:33:10

标签: mpi communication

试图找出开放式MPI中All-to-All Reduction和All-Reduce之间的区别。根据我的理解,All-to-One Reduction从所有进程中获取一块INSERT INTO table (..., `var-name`, ...) VALUES(..., value, ...); (整数,数组等),并将所有部分与运算符(min,max,sum等等)组合在一起。将其存储在选定的进程中。由此我假设All-to-All Redu是相同的,但产品存储在所有过程中而不是一个。从this文件来看,似乎All-Reduce基本上和All-to-All还原一样,这是对的还是我弄错了?

1 个答案:

答案 0 :(得分:3)

all-reduce MPI_Allreduce)是减少广播的组合<{1}},{{ 1}})。他们可能称之为MPI_Reduce。值得注意的是,MPI减少不会导致全球减少。因此,如果在5个进程中分别有10个数字,则MPI_Bcast个进程有10个数字。在MPI_Reduce_Bcast之后,所有5个进程都有相同的10个数字。

相反,全部减少执行减少分散,因此称为MPI_Reduce。因此,如果您在5个进程中分别有10个数字,则在MPI_Allreduce之后,5个进程各有2个数字。请注意,MPI本身并不使用 all-to-all reduction 术语,可能是由于误导性歧义。