以MPI为单位的所有到所有缩减和所有缩减之间的差异

以MPI为单位的所有到所有缩减和所有缩减之间的差异,mpi,communication,Mpi,Communication,试图找出开放MPI中所有到所有还原和所有还原之间的区别。据我所知,一对一归约从所有进程中提取一个片段m(整数、数组等),并用一个运算符(最小、最大、求和等)将所有片段组合在一起,并将其存储在所选进程中。从这一点上,我假设所有的还原都是相同的,但是产品存储在所有的过程中,而不是一个过程中。从文档上看,似乎所有的Reduce基本上都在做相同的事情,这是对的还是我弄错了 所有reduce(MPI\u Allreduce)是一个合并的reduce和广播(MPI\u reduce,MPI\u Bcast)

试图找出开放MPI中所有到所有还原和所有还原之间的区别。据我所知,一对一归约从所有进程中提取一个片段
m
(整数、数组等),并用一个运算符(最小、最大、求和等)将所有片段组合在一起,并将其存储在所选进程中。从这一点上,我假设所有的还原都是相同的,但是产品存储在所有的过程中,而不是一个过程中。从文档上看,似乎所有的Reduce基本上都在做相同的事情,这是对的还是我弄错了

所有reduce(
MPI\u Allreduce
)是一个合并的reduce和广播(
MPI\u reduce
MPI\u Bcast
)。他们可能会称之为
MPI\u Reduce\u Bcast
。重要的是要注意,MPI缩减不会进行任何全局缩减。因此,如果在5个进程上各有10个数字,则在
MPI\u Reduce
之后,一个进程有10个数字。在
MPI\u Allreduce
之后,所有5个进程都有相同的10个数字

与此相反,全对全归约执行归约和分散,因此称为
MPI\u归约\u分散[\u block]
。因此,如果在5个进程上各有10个数字,则在一个
MPI\u Reduce\u scatter\u块
之后,5个进程各有2个数字。请注意,MPI本身并没有使用术语“全部到全部”缩减,这可能是由于具有误导性的歧义