Когда не использовать MPI - PullRequest
       54

Когда не использовать MPI

4 голосов
/ 23 сентября 2011

Это не вопрос конкретного технического аспекта кодирования MPI.Я НОВИНКА для MPI, и я не хочу дурачить себя из-за неправильного использования библиотеки, поэтому разместил вопрос здесь.

Насколько я понимаю, MPI - это среда для построения параллельных приложений на модели распределенной памяти.

У меня есть система, которая связана с Infiniband, с единственной целью выполнения некоторых очень трудоемких операций.Я уже разработал алгоритм, чтобы сделать это параллельно, поэтому я на самом деле использую только MPI для передачи данных (результаты промежуточных шагов) между несколькими узлами через Infiniband, что, я думаю, можно просто использовать OpenIB.

Правильно ли я использую MPI?Или я отклоняюсь от первоначального намерения системы?

Ответы [ 3 ]

5 голосов
/ 23 сентября 2011

Хорошо использовать только MPI_Send & MPI_Recv в вашем алгоритме. По мере развития вашего алгоритма вы приобретаете больше опыта и т. Д. Вы можете найти применение для более «продвинутых» функций MPI, таких как барьер и коллективная связь, таких как сбор, уменьшение и т. Д.

4 голосов
/ 28 сентября 2011

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

Да, вы могли бы также писать необработанные вызовы OpenIB, чтобы выполнять свою работу, но что произойдет, когда вам нужно переместиться в кластер Ethernet, или на огромную машину с общей памятью, или как там будет следующий большой межсоединение? MPI - это промежуточное программное обеспечение, и поэтому одним из его главных преимуществ является то, что вам не нужно тратить время на написание кода сетевого уровня.

0 голосов
/ 14 мая 2012

На другом конце спектра сложности время, когда не нужно использовать MPI, - это когда ваша проблема или метод решения представляют достаточный динамизм, чтобы использование MPI (в частности, его модель процесса) было помехой. Система, подобная Charm ++ (раскрытие: я разработчик Charm ++), позволяет вам выполнять декомпозицию проблем с точки зрения более мелкозернистых модулей, а ее система времени выполнения управляет распределением этих модулей по процессорам для обеспечения баланса нагрузки, и отслеживает, где они находятся, чтобы направлять связь соответствующим образом.

Еще одна нередкая проблема - это динамические шаблоны доступа к данным, где что-то вроде Global Arrays или языка PGAS будет гораздо проще кодировать.

...