我在网上看到了这个
MPI_Scatter获取元素数组,并按进程排名的顺序分配元素。
但我在文档中找不到它。
我有一个数组,有4个进程。一个过程是root - >将在其他3个进程之间分散数据。 id-s为0,1,2,3。
问题:保证,MPI_Scatter()
或MPI_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: [ ]
另外,聚集做同样的事情吗? (保留订单)
答案 0 :(得分:1)
根据MPI_Comm中的排名保证订单。
以下语句是从open-mpi v2.1文档中复制粘贴的:
另一种描述是root用户发送消息 MPI_Send(sendbuf,sendcount * n,sendtype,...)。此消息被拆分 在n个相等的段中,第i个段被发送到第i个进程 该组,每个进程都会收到上述消息。发送 所有非根进程都会忽略缓冲区。