试图找出开放式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还原一样,这是对的还是我弄错了?
答案 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 术语,可能是由于误导性歧义。