Fortran 阵列部分上的MPI_减少

Fortran 阵列部分上的MPI_减少,fortran,mpi,Fortran,Mpi,我在Fortran中定义了如下数组: integer,dimension(100)::a integer,dimension(100)::partial_sum_a 我想使用MPI_REDUCE只对根上从索引5到10(即a(5),…,a(10))的a的值求和。我该怎么做?政府可否告知本局: MPI_Reduce(a(5:),partial_sum_a(5:),6,...) 没事吧?或者我必须使用MPI_TYPE_VECTOR吗?是的,考虑到包含多个元素的数组片也是一个数组,通常使用MPI_R

我在Fortran中定义了如下数组:

integer,dimension(100)::a
integer,dimension(100)::partial_sum_a
我想使用MPI_REDUCE只对根上从索引
5
10
(即a(5),…,a(10))的
a
的值求和。我该怎么做?政府可否告知本局:

MPI_Reduce(a(5:),partial_sum_a(5:),6,...)

没事吧?或者我必须使用MPI_TYPE_VECTOR吗?

是的,考虑到包含多个元素的数组片也是一个数组,通常使用
MPI_Reduce
也可以。显然,您需要确保
MPI\u Reduce
调用中的所有参数都是正确的,即
count
匹配发送缓冲区中的元素数等。大多数情况下,您可以自己尝试这些事情,比从internet上的人那里得到答案更快。

是,假设一个包含多个元素的数组切片也是一个数组,那么通常使用
MPI\u Reduce
也可以。显然,您需要确保
MPI\u Reduce
调用中的所有参数都是正确的,例如,
count
匹配发送缓冲区中的元素数等。通常,你可以自己尝试这些事情,比从互联网上得到答案更快。

所以不需要MPI类型向量?我使用
MPI类型向量
与数组切片一起使用,而不使用
MPI类型向量
。我确实使用了切片小数组,这很好,但当我为较大的数组使用时,它的行为非常奇怪,即不像预期的那样。因此不需要MPI_类型_向量?我使用
MPI_Reduce
来处理数组切片,而不使用
MPI_类型_向量
。我确实为小数组使用切片,这很好,但当我为较大的数组使用切片时,它的行为非常奇怪,也就是说,没有预期的那样。