Обычно бывает так, что отправка 1 большого сообщения происходит быстрее, чем отправка 10 небольших сообщений.Затраты времени на отправку сообщения хорошо моделируются с учетом задержки (сколько времени потребуется, чтобы отправить пустое сообщение, которое не равно нулю из-за накладных расходов на вызовы функций, задержки в сети и т. Д.) И пропускной способности (насколькодля отправки дополнительного байта требуется больше времени, поскольку сетевые коммуникации уже начались).Объединяя сообщения в одно сообщение, вы увеличиваете время ожидания только один раз, и это часто является выигрышем (хотя всегда можно придумать случаи, когда это не так).Лучший способ узнать какой-то конкретный код - это просто попробовать.Обратите внимание, что типы данных MPI позволяют вам очень мощные способы описать расположение ваших данных в памяти, так что вы можете переносить их почти напрямую из памяти в сеть, не делая промежуточную копию в некоторый буфер (так называемое «маршалинг»data).
Что касается более общих вопросов оптимизации относительно MPI - не зная больше, все, что мы можем сделать, - это дать вам совет, который является настолько общим, что он не очень полезен.Минимизируйте количество сообщений, которые необходимо сделать;везде, где возможно, используйте встроенные инструменты MPI (коллективы и т. д.), а не реализуйте свои собственные.