Mpi是否以任何顺序发送数据

Mpi是否以任何顺序发送数据,mpi,Mpi,我在网上看到的 MPI_分散采用一个元素数组,并按进程秩的顺序分布元素 但我在文件上找不到它 我有一个数组,有4个进程。一个进程是root->将数据分散在其他3个进程中。id-s为0、1、2、3 问题:MPI\u Scatter()或MPI\u Scatterv()是否保证按顺序发送数据 例1: 0: [a, b, c, d, e] // after scatter 1: [a, b] 2: [c, d] 3: [e] 例2: 0: [a, b] // after scatter 1:

我在网上看到的

MPI_分散采用一个元素数组,并按进程秩的顺序分布元素

但我在文件上找不到它

我有一个数组,有4个进程。一个进程是root->将数据分散在其他3个进程中。id-s为0、1、2、3

问题:
MPI\u Scatter()
MPI\u Scatterv()
是否保证按顺序发送数据

例1:

0: [a, b, c, d, e]

// after scatter

1: [a, b]
2: [c, d]
3: [e]
例2:

0: [a, b]

// after scatter

1: [a]
2: [b]
3: [ ]

还有,gather也做同样的事情吗?(保留顺序)

根据MPI_通信中的等级保证顺序。

以下语句是从open mpi v2.1文档中粘贴的副本:

另一种描述是,root用户发送一条带有 MPI_发送(sendbuf、sendcount*n、sendtype等)。此消息已拆分 在n个相等的段中,第i个段被发送到中的第i个进程 组和每个进程接收此消息,如上所述。发送 对所有非根进程忽略缓冲区


MPI\u Scatter()
将数据分散到包括自身在内的所有任务。在您的情况下,您需要
MPI\u Scatterv()
变量,因为发送缓冲区大小不是通信器大小的倍数。@GillesGouaillardet谢谢您提供的信息。但是,
MPI\u Scatterv()
是否会按照过程等级的顺序发送数据?@donjoe-使用Scatterv,顺序由您控制。@JonathanDursi,既然我必须控制顺序,您认为使用
Scatterv
或手动
send/recv
更有效吗?(对于与我的问题类似的例子)Scatterv通常会更有效,因为实现可以使用比线性发送循环更有效的算法。