C++ 在mpi映射之间更改

C++ 在mpi映射之间更改,c++,parallel-processing,mpi,C++,Parallel Processing,Mpi,我有一个平行图,其中一个向量分布在不同的PID中。这个向量由3个数字组成。假设这个向量被构造为(a1,b1,c1,a2,b2,c2,a3,b3,c3,…,an,bn,cn)。我不知道这些数字是如何在PIDS上传播的。现在我必须收集所有的(a1,a2,a3,…,an)数字并制作另一张地图来收集它们。(b1,b2,b3,…,bn)和(c1,c2,c3,…,cn)也一样。我是mpi新手,所以我不知道怎么做。有人能帮我吗 请更具体地说明什么样的数据位于哪个级别,以及您希望如何重新排列。目前尚不清楚您的地

我有一个平行图,其中一个向量分布在不同的PID中。这个向量由3个数字组成。假设这个向量被构造为(a1,b1,c1,a2,b2,c2,a3,b3,c3,…,an,bn,cn)。我不知道这些数字是如何在PIDS上传播的。现在我必须收集所有的(a1,a2,a3,…,an)数字并制作另一张地图来收集它们。(b1,b2,b3,…,bn)和(c1,c2,c3,…,cn)也一样。我是mpi新手,所以我不知道怎么做。有人能帮我吗

请更具体地说明什么样的数据位于哪个级别,以及您希望如何重新排列。目前尚不清楚您的地图(它是
std::map
?)或向量是如何在等级之间传播的。数据是双重的。地图是Trilinos软件包的电子地图。我不知道我的数据是如何在列组之间分布的,这正是我的问题。首先记录每个列组的向量长度,使用
MPI\u Allgather
让所有进程都知道它,然后再次使用
MPI\u Allgatherv
使用上一步中收集的大小。