对不起,如果这个问题是常见的或微不足道的,我对 MPI 不是很熟悉,所以请多多包涵。
我有一个向量矩阵。每个向量都是空的或其中有一些项目。
std::vector<someStruct*> partitions[matrix_size][matrix_size];
当我启动程序时,每个进程都会在这个矩阵中拥有相同的数据,但是随着代码的进行,每个进程可能会从一些向量中删除几个项目并将它们放入其他向量中。
所以当我遇到障碍时,我必须以某种方式确保每个进程都有这个矩阵的最新版本。最大的问题是每个进程都可能操纵任何或所有向量。
我将如何确保每个进程在屏障之后都有正确的更新矩阵?
编辑:对不起,我不清楚。每个进程可以将一个或多个对象移动到另一个向量,但只有一个进程可以移动每个对象。换句话说,每个进程都有一个它可以移动的对象列表,但是每个人都可以更改矩阵。两个进程永远不能移动同一个对象。