Реализация MPI: MPI_Recv может получить сообщения от многих MPI_Send?

Теперь я пытаюсь использовать MPI_Sendand MPI_Recv для передачи лучше всего найденный решениями среди нескольких процессов. Лучшие решения, найденные в каждом процессе, как предполагается, передают процессу управления, что хранит все лучшие решения, и отправьте к другим процессам при необходимости. Мой вопрос состоит в том, как реализовать его? Например, однажды обрабатывают 1, находят новое лучшее, это может назвать MPI_Send и отправить его в процесс управления. Существует ли путь к процессу управления для обнаружения существует сообщение для получения? Каждый MPI_Send требует MPI_Recv? Нетерпеливое ожидание слышать совет от Вас эксперты.Спасибо!

Спасибо за Ваш совет. То, что я думаю, чтобы сделать, должно позволить нескольким рабочим процессам отправить сообщения в один процесс управления. Рабочие процессы решают, когда отправить. Процесс управления должен обнаружить, когда получить. MPI_Proble может сделать это?

5
задан Jackie 28 February 2010 в 15:06
поделиться

3 ответа

Да, MPI_RECV может укажите MPI_ANY_SOURCE в качестве ранга источника сообщения, чтобы вы могли делать то, что хотите.

12
ответ дан 18 December 2019 в 07:29
поделиться

MPI_Recv может использовать MPI_ANY_SOURCE как способ получения сообщения с любым другим рангом.

В зависимости от рабочей нагрузки и характера процесса управления вы можете захотеть сохранить контроль в своем коде и только время от времени входить в библиотеку MPI. В этом случае MPI_IRecv на MPI_ANY_SOURCE и MPI_Test могут быть хорошим способом продолжить.

Если требуется выполнить некоторую обработку на основе содержимого сообщения, MPI_Probe или MPI_IProbe разрешают проверку заголовка сообщения ДО того, как сообщение будет фактически MPI_Recv'd. Например, MPI_Probe позволяет определить размер сообщения и создать буфер соответствующего размера.

Кроме того, если все рабочие ранги иногда достигают точки «барьера», когда следует проверять лучшие решения, коллективная операция MPI_Gather / MPI_Bcast также может быть подходящей.

Имейте в виду, что ранги, входящие в длительные этапы вычислений, иногда мешают хорошему распространению сообщений. Если есть расширенная вычислительная фаза, может быть полезно убедиться, что все сообщения MPI были доставлены до этой фазы. Это становится более важным, если в кластере используется межсоединение в стиле RDMA. MPI_Barrier гарантирует, что все ранги войдут в MPI_Barrier до того, как какие-либо ранги MPI смогут вернуться из вызова MPI_Barrier.

6
ответ дан 18 December 2019 в 07:29
поделиться

Взгляните на MPI_Probe .

3
ответ дан 18 December 2019 в 07:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: