この質問が一般的または些細なことでしたらすみません。私は MPI にあまり詳しくないので、ご容赦ください。
ベクトルの行列があります。各ベクトルは空であるか、いくつかの項目が含まれています。
std::vector<someStruct*> partitions[matrix_size][matrix_size];
プログラムを開始すると、各プロセスはこのマトリックスに同じデータを持ちますが、コードが進行するにつれて、各プロセスはいくつかのベクトルからいくつかのアイテムを削除し、それらを他のベクトルに配置する可能性があります。
そのため、障壁に到達したときは、各プロセスにこのマトリックスの最新バージョンがあることをどうにかして確認する必要があります。大きな問題は、各プロセスが一部またはすべてのベクトルを操作する可能性があることです。
すべてのプロセスがバリアの後に正しい更新されたマトリックスを持っていることを確認するにはどうすればよいですか?
編集:申し訳ありませんが、明確ではありませんでした。各プロセスは 1 つ以上のオブジェクトを別のベクトルに移動できますが、各オブジェクトを移動できるのは 1 つのプロセスだけです。言い換えれば、各プロセスには移動できるオブジェクトのリストがありますが、マトリックスは誰でも変更できます。そして、2 つのプロセスが同じオブジェクトを移動することはできません。