OpenMP или MPI или OpenMPI для кластера с распределенной памятью?

Я хочу распараллелить последовательный код C в кластере с распределенной памятью из 100 узлов. Кластер состоит из 25 лезвий с 4 ядрами в каждом по infiniband. Раньше я просто использовал PBS для распространения нескольких последовательных запусков программы между разными узлами. Теперь мне интересно:

  1. Какова наилучшая альтернатива в этом случае OpenMP, MPI или OpenMPI (на данный момент я не хочу пробовать смешанный подход, поскольку начинаю учиться)?
  2. Где я могу найти примеры/учебники?
  3. Всегда ли OpenMP/MPI/OpemMPI для простого последовательного кода с основным циклом for работает лучше, чем подход с очередями, такой как PBS?

person Open the way    schedule 15.12.2010    source источник


Ответы (2)


Тип распределенной памяти исключает OpenMP, предназначенный для вычислений с общей памятью. MPI — это стандарт, а OpenMPI — реализация этого стандарта (есть и другие, такие как MPICH или LAM-MPI). так

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

  2. Повсюду. Вот одно хорошее место для начала.

  3. PBS — это система планирования работы. В таком кластере, как ваш, обычно устанавливается как MPI, так и планировщик заданий. Если не PBS, то, скорее всего, Grid Engine.

Как вы уже узнали, вы можете использовать PBS (или Grid Engine, если на то пошло) для отправки нескольких последовательных заданий в кластер. Вы также можете использовать его для отправки одного параллельного задания в кластер для выполнения на любом количестве процессоров, которое вы запрашиваете. Ваш вопрос, тем не менее, повышает вероятность того, что ваша проблема поразительно параллельна и что MPI может оказаться для вас излишним. Погуглите термин, выделенный курсивом, прежде чем браться за распараллеливание своей программы — если только вы не хотите этого ради чистого удовольствия, которое, несомненно, будет результатом.

person High Performance Mark    schedule 15.12.2010

OpenMP предназначен для компьютеров с общей памятью, я считаю, что вы не можете использовать его с распределенной памятью. Так что вам придется использовать MPI.

Хороший учебник по MPI: https://computing.llnl.gov/tutorials/mpi/.

person Dr. Snoopy    schedule 15.12.2010
comment
Intel перенесла OpenMP в распределенную память в своем проекте Cluster OpenMP (сейчас от него отказались). Домашняя страница: software.intel.com/en-us /articles/, документ Расширение OpenMP на кластеры: assets.devx.com/goparallel/ 19403.pdf HPCWire: hpcwire.com/2006/05/ 19/openmp_on_clusters-1 и сравнительный анализ Первый опыт работы с Intel Cluster OpenMP - person osgx; 01.05.2014