Какая лучшая реализация MPI

Мне нужно реализовать систему MPI в кластере. Если у кого-то есть опыт работы с MPI (MPICH / OpenMPI), я хотел бы знать, что лучше и как можно повысить производительность в кластере из блоков x86_64.


person prasanna    schedule 27.09.2008    source источник


Ответы (4)


MPICH существует намного дольше. Он чрезвычайно портативен, и в Интернете вы найдете полезные советы и рекомендации. Это беспроигрышный вариант, и он, вероятно, совместим с другими программами MPI.

OpenMPI новее. Хотя он не такой портативный, он действительно хорошо поддерживает наиболее распространенные платформы. Большинство людей, кажется, думают, что это намного лучше в нескольких отношениях, особенно в отношении отказоустойчивости, но чтобы воспользоваться этим, вам, возможно, придется использовать некоторые из его специальных функций, которые не являются частью стандарта MPI.

Что касается производительности, она во многом зависит от приложения; сложно дать общий совет. Вы должны задать конкретный вопрос о типе вычислений, которые вы хотите запустить, количестве узлов и типе оборудования, включая тип используемого сетевого оборудования.

person dmazzoni    schedule 28.09.2008
comment
Поддержка отказоустойчивости MPICH2 недавно была существенно улучшена. Если вы заинтересованы в использовании этой поддержки, вы можете узнать о ней больше, отправив по почте список MPICH2 ([email protected]). - person Dave Goodell; 01.03.2011
comment
Как можно узнать, какую версию MPI использует данный сервер? Я использую привязку python mpi4py, но мне нужно знать, какова основная версия MPI? - person 218; 22.03.2016
comment
@ 218 MPI_Get_version Номер версии MPI - person Jeff Hammond; 08.06.2019
comment
Или MPI_Get_library_version, но это не вернет стандартизированный вывод, поэтому вам придется его проанализировать. - person Jeff Hammond; 08.06.2019

Я написал довольно много параллельных приложений для кластеров Windows и Linux, и могу вам сказать, что сейчас MPICH2, вероятно, более безопасный выбор. Это, как упоминает другой респондент, очень зрелая библиотека. Также имеется широкая поддержка вещания (через MPI_Bcast) теперь, и на самом деле, MPICH2 имеет довольно много действительно хороших функций, таких как разбросать и собрать.

Тем не менее, OpenMPI набирает обороты. Penguin computing (они являются крупным поставщиком кластеров, и им нравится Linux) на самом деле имеет несколько действительно сильных тестов, в которых OpenMPI опережает MPICH2 в определенных обстоятельствах.

Что касается вашего комментария о «повышении производительности», лучший совет, который я могу дать, - никогда не отправлять больше данных, чем абсолютно необходимо, если вы ограничены вводом-выводом, и никогда не выполнять больше работы, чем необходимо, если вы ограничены процессором. Я не раз попадал в ловушку оптимизации неправильного фрагмента кода :) Надеюсь, вы не пойдете по моим стопам!

Посетите форумы MPI - на них есть много хорошей информации о подпрограммах MPI, а также На сайте Beowulf есть ответы на множество интересных вопросов.

person Mike    schedule 19.02.2009

«Лучше» сложно определить ... «Быстрее» можно ответить, сравнив его с вашим кодом и вашим оборудованием. Такие вещи, как коллективная оптимизация и оптимизация разгрузки, будут зависеть от вашего конкретного оборудования, а также могут быть довольно вариативными в отношении версий стека драйверов, Google должен быть в состоянии найти ваши рабочие комбинации.

Что касается работы по оптимизации, это отчасти зависит от кода и отчасти от оборудования.

Привязан ли ввод-вывод вашего кода к хранилищу? В этом случае может помочь исследование чего-то лучшего, чем NFS, или использование ввода-вывода MPI, а не наивного параллельного ввода-вывода.

Если вы привязаны к сети, то может помочь изучение местоположения связи и перекрытия коммуникаций и вычислений. Большинство различных реализаций MPI имеют параметры настройки для использования локальной общей памяти, а не сети для внутриузловой связи, что для некоторых кодов может значительно снизить нагрузку на сеть.

Разделение трафика ввода-вывода и MPI может иметь большое значение для некоторых кластеров, особенно для кластеров Gigabit Ethernet.

person Funcan    schedule 18.03.2010

Мы использовали mpich просто потому, что он казался наиболее доступным и хорошо документированным, мы не прикладывали много усилий для тестирования альтернатив. У MPICH есть разумные инструменты для развертывания в Windows.
Основная проблема с производительностью, которая у нас возникла, заключалась в том, что нам нужно было отправлять одни и те же базовые данные на все узлы, а MPICH не поддерживает (или не поддерживает) широковещательную передачу, поэтому развертывание исходных данных Был на)

person Martin Beckett    schedule 28.09.2008
comment
MPICH (разработан ~ 1993 г.) поддерживает широковещательную передачу, по крайней мере, примерно с 1994 г. MPICH2 (разработан ~ 2000 г. как преемник MPICH) поддерживает широковещательную передачу с самого начала процесса разработки. Возможно, вы имели в виду что-то помимо MPI_Bcast? Я не верю, что стандартная версия любой из реализаций в настоящее время поддерживает запуск исполняемых файлов, когда программа, которую нужно выполнить, перемещается в узлы с помощью mpiexec. - person Dave Goodell; 01.03.2011
comment
Я забыл, почему мы не могли использовать bcast - может быть, через TCP или размер данных? - person Martin Beckett; 01.03.2011
comment
Ни то, ни другое не является веским аргументом против существования поддержки MPI_Bcast в MPICH. - person Jeff Hammond; 11.07.2015