Извините, если этот вопрос является общим или тривиальным, я не очень хорошо знаком с MPI, так что несите меня.MPI синхронизировать матрицу векторов
У меня есть матрица векторов. Каждый вектор пуст или содержит несколько элементов.
std::vector<someStruct*> partitions[matrix_size][matrix_size];
При запуске программы каждый процесс будет иметь одни и те же данные в этой матрице, но, как код прогрессирует каждый процесс может удалить несколько элементов из некоторых векторов и поместить их в других векторах.
Итак, когда я достигаю барьера, мне нужно как-то убедиться, что каждый процесс имеет последнюю версию этой матрицы. Большая проблема заключается в том, что каждый процесс может манипулировать любыми или всеми векторами.
Как я буду следить за тем, чтобы каждый процесс имел правильную обновленную матрицу после барьера?
EDIT: Прошу прощения, что я не был чист. Каждый процесс может перемещать один или несколько объектов на другой вектор, но только один процесс может перемещать каждый объект. Другими словами, каждый процесс имеет список объектов, которые он может перемещать, но матрица может быть изменена всеми. И два процесса не могут перемещать один и тот же объект.
Если каждый процессор манипулирует потенциально любым элементом, как вы решаете, что такое «правильная обновленная матрица»? –
Прошу прощения, я не был ясен. Каждый процесс может перемещать один или несколько объектов на другой вектор, но только один процесс может перемещать каждый объект. – Chippen