按顺序收集来自不同进程的数组

Gathering arrays from different processes in order

我有几个进程,每个进程计算一些子数组。他们完成后,我需要按顺序将数组拼接在一起(即:子数组 0,然后是子数组 1,然后是子数组 2,等等)。问题:Gathering small matrix portions from different processes with MPI 的答案涉及循环遍历流程,并且 sending/recieving 一次一个。但是我不相信数组会按照我的要求按顺序存储?是否有另一种方法,其中根进程具有 a) 每个子数组和 b) 它来自哪个进程的知识?非常感谢!

由于没有任何代码可供查看,此答案将略显细节。您可以使用 MPI_ANY_SOURCE 作为任何 MPI 接收函数的源参数,然后检查“status.Get_source()”以找出谁向您发送了消息。很多这样的例子 here.