Улучшить программу MPI - PullRequest
       34

Улучшить программу MPI

0 голосов
/ 16 февраля 2011

Я написал программу MPI, которая, кажется, работает нормально, но меня интересует производительность. Главный поток должен делать 10 или более раз MPI_Send, а рабочий получает данные 10 или более раз и отправляет их. Интересно, даёт ли это снижение производительности и могу ли я передавать все в одиночных структурах или какую другую технику я могу извлечь выгоду.

Другой общий вопрос: когда программа MPI работает более или менее, каковы лучшие методы оптимизации.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2011

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

Что касается более общих вопросов оптимизации относительно MPI - не зная больше, все, что мы можем сделать, - это дать вам совет, который является настолько общим, что он не очень полезен.Минимизируйте количество сообщений, которые необходимо сделать;везде, где возможно, используйте встроенные инструменты MPI (коллективы и т. д.), а не реализуйте свои собственные.

0 голосов
/ 05 июня 2014

Один из способов полностью понять производительность вашего MPI-приложения - запустить его в симуляторе платформы SimGrid.Предоставленных инструментов и моделей достаточно, чтобы получить реалистичные временные прогнозы для приложений среднего уровня (например, несколько десятков тысяч строк C или Fortran), и его можно связать с адаптированными инструментами визуализации, которые помогут вам полностью понять, что происходитв вашем приложении, и фактические компромиссы производительности, которые вы должны учитывать.

Для демонстрации, пожалуйста, обратитесь к этой экранной передаче: https://www.youtube.com/watch?v=NOxFOR_t3xI

...