Я пытаюсь реализовать программу мастер-работник.
У моего хозяина есть работа, которую собираются выполнять рабочие. Каждый раз, когда работник завершает работу, он просит у мастера новую работу, и мастер посылает ее ему. Рабочие рассчитывают минимальные пути. Когда работник находит минимум, который лучше, чем глобальный минимум, который он получил, он отправляет его всем, включая мастера.
Я планирую, чтобы рабочие и мастера отправляли данные, используя MPI_ISEND
. Также я считаю, что прием должен быть блокирующим. Мастеру нечего делать, когда никто не запросил работу или не обновил лучший результат, поэтому ему следует заблокировать ожидание получения. Кроме того, каждый работник должен после получения своей работы ждать получения, чтобы получить новый.
Тем не менее, Я не уверен в последствиях использования неблокирующей асинхронной отправки и блокировки синхронного приема .
Альтернатива, я думаю, использует MPI_IPROBE
, но я не уверен, что это даст мне какую-либо оптимизацию.
Пожалуйста, помогите мне понять, правильно ли то, что я делаю. Это правильное решение?