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.