Павел Скворцов

Скворцов
Павел
Владимирович

группа: СП-06м
e-mail: cyfaws@mail.ru
Тема магистерской работы: "Разработка и исследование решателя уравнений параллельной моделирующей среды на основе OpenMP-стандарта"
Руководитель: проф. Святный В.А.

Автобиография    Автореферат    Перечень ссылок    Отчёт о поиске    Библиотека    Моделирующая программа
ДонНТУ    Магистры ДонНТУ


Разработка комбинированных MPI / OpenMP приложений


Authors: Lorna Smith, Mark Bull
Дата публикации: 2001
Первоисточник: http://www.ukhec.ac.uk/publications/reports/spr00078.pdf
Аннотация: Перевод статьи "Development of mixed mode MPI / OpenMP applications" в сокращённом варианте. Статья посвящена анализу разных вариантов использования комбинаций MPI и OpenMP в параллельных приложениях.

Abstract

Комбинированный код MPI / OpenMP потенциально может предложить наиболее эффективную стратегию параллелизации для SMP-кластера, а также, позволяя использовать различные особенности обеих парадигм, может обеспечить наилучшую эффективность на отдельно взятом SMP. В данной статье обсуждается имплементация, разработка и исполнение комбинированных MPI / OpenMP приложений.

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

1. Введение

Архитектуры с общей памятью постепенно становятся всё более значимыми на рынке HPC, поскольку преимущества данной технологии позволили большему числу центральных процессоров иметь доступ к единому пространству памяти. Кроме того, изготовители всё чаще группируют такие SMP системы вместе, чтобы выйти за пределы одной системы. Некоторые из них, такие как cc-NUMA системы, пока что обеспечивают единое адресное пространство в рамках кластера, в то время как другие имеют отдельные адресные пространства для каждого узла. В то время как кластерные SMP системы становятся более распространёнными, для приложений всё более важно быть портативными и эффективными на этих системах. Коды для передачи сообщений, написанные на MPI, ясно портативны и могут быть легко перенесены на кластерные SMP системы. Пока пересылка сообщений может быть необходимой для сообщения между узлами, очевидно, что это не самая эффективная техника параллелизации в пределах узла SMP. Теоретически, такая модель общей памяти как OpenMP должна предложить более эффективную стратегию параллелизации внутри узла SMP. Следовательно, комбинация общей памяти и парадигмы параллелизации, основанной на передаче сообщений, в пределах одного и того приложения (комбинированный метод программирования) может обеспечить более эффективную стратегию переллелизации, чем чистый MPI. В то время как комбинированный метод может быть применён в других языках программирования, например High Performance Fortran и POSIX threads, в данной статье внимание фокусируется на комбинированном MPI / OpenMP коде. Причина этого в том, что такая комбинация представляет наиболее распространённое применение комбинированного метода программирования на кластерах SMP из-за их мобильности и того факта, что они представляют промышленные стандарты для систем с распределённой и общей памятью соответственно. В то время как кластеры SMP предлагают важнейшую причину для развития комбинированного метода программирования, обе парадигмы – и OpenMP, и MPI имеют свои преимущества и недостатки, и путём развития такой модели эти характеристики могут быть использованы так, чтобы добиться наибольшей эффективности на отдельно взятой SMP системе.

В данной статье рассматриваются выгоды от развития комбинированных MPI / OpenMP приложений как на отдельно взятой SMP системе, так и на объединённых в кластер нескольких SMP систем. В секции 2 описаны аналогичные работы, посвящённые комбинированному программированию, в то время как в секции 3 представлено сравнение различных особенностей OpenMP и MPI парадигм. В секции 4 обсуждается имплементация комбинированных приложений, и в секции 5 описаны ситуации, где комбинированный метод программирования может быть выгоден. Секция 6 содержит пример, а секция 7 – реальное комбинированное приложение; в обоих случаях описана имплементация комбинированного приложения, сравнение и сопоставление исполнения кода с чистыми MPI и OpenMP версиями.

2. Аналогичные работы

Хенти и др. [7] разработали MPI, OpenMP и комбинированную версию кода модели дискретного элемента (DEM) и сравнили эффективность. Эта работа также обсуждается далее в секции 5. Тафти и др. [10,24] изучили нестандартные приложения, такие как коды адаптивного измельчения сетки, которые страдают от проблем балансировки при использовании MPI. При разработке комбинированного кода для SMP систем, объединённых в кластер, MPI должен использоваться только для коммуникации между узлами. Имплементация с использованием OpenMP не страдает от проблем балансировки, и, следовательно, работа кода может быть улучшена. Они развили технику, названную балансированием вычислительной мощности, которая динамически регулирует число процессоров, работающих над отдельным вычислительным процессом. Эта работа обсуждена далее в секции 5. Ланукара и др. [14] разработали комбинированные OpenMP / MPI версии двух алгоритмов Сопряженных градиентов и сравнили их эффективность с имплементациями чистого MPI.

DoD «Программа модернизации высокопроизводительных вычислений» (HPCMP) «Экспериментальная станция фарватеров» (WES) разработали комбинированную OpenMP / MPI версию кода CGWAVE [25]. Этот код используется ВМС США для прогноза и анализа условий в гавани. Компоненты волны выступают параметрами пространства, и компонент каждой волны создаёт отдельное частичное дифференциальное уравнение, которое решается на том же конечном элемента сетки. MPI используется, чтобы распределить компоненты волны, используя простую стратегию босса-рабочего, приводящую к зерновому параллелизму зерна. Каждый компонент волны приводит к большой разряжённой линейной системе уравнений, которая распараллеливается с помощью OpenMP. Разработка комбинированного кода сделала возможным исполнение этих моделирований на сетке компьютеров, в данном случае – на двух различных компьютерах, расположенных в разных местах, одновременно. Этот комбинированный код был очень успешен и выиграл награду “Самая эффективная техническая методологию” вознаграждение в SC98.

Бова и др. [2] разработали комбинированные версии пяти различных кодов. К ним относятся упомянутый выше код CGWAVE, с начала квантовый химический пакет GAMESS, исследование линейной алгебры, тонкослойный решатель Navier-Stokex (TLNS3D) и база для сейсмической обработки SPECseis96. Каждая модель была разработана по различным причинам, однако чаще всего встречается многоуровневый параллелизм, с программированием распределённой памяти для более крупнозернистого параллелизма и программированием общей памяти для мелкозернистости.

Буш и др. [3] разработали комбинированные MPI / OpenMP версии некоторых алгоритмов для ядра и более крупных приложений, заключая, что, хотя существенное увеличение эффективности может быть получено на некоторых приложениях для ядра, это требует существенных усилий. Каппелло и др. [4] сравнили и сопоставили работу чистого MPI и комбинированных MPI / OpenMP версий базы NAS 2.3, заключая, что выбор модели не тривиален и требует рассмотрения таких проблем как затраты на коммуникации, образцы доступа к памяти и достижимый уровень параллелизации общей памяти.

Наконец, множество мнений и презентаций также представлены при сравнении OpenMP, MPI и стиля комбинированного программирования. Дополнительную информацию см. [1,5,6,13,15,16,20,22].

3. Характеристики программной модели

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

3.1. MPI

Модель программирования с передачей сообщений является моделью с распределённой памятью с внешним контролем параллелизма. MPI [17] совместим как с распределённой, так и с общей структурой памяти, и позволяет статическое планирование задач. Внешний параллелизм часто обеспечивает большую эффективность, и количество оптимизированных коллективных процедур коммуникации доступно для оптимальной эффективности. Проблемы с размещением данных наблюдаются редко, и синхронизация происходит неявно с вызовами подпрограмм и, следовательно, естественно минимизированы. Однако MPI имеет некоторые недостатки. Декомпозиция, разработка и отладка приложений могут потребовать значительных временных затрат, и существенные изменения в коде часто необходимы. Коммуникации могут потребовать дополнительных расходов, и кодовая степень детализации часто должна быть большой, чтобы минимизировать время ожидания. Наконец, глобальные операции могут быть очень дорогими.

3.2. OpenMP

OpenMP – промышленный стандарт [19] для программирования общей памяти. Основанный на комбинации директив компилятора, библиотечных процедур и переменных окружающей среды это используется, чтобы определить параллелизм на машинах совместно используемой памяти. Коммуникация неявна, и OpenMP приложения относительно легки в имплементации. Теоретически, OpenMP лучше использует архитектуру общей памяти. Программирование времени исполнения возможно, и потому эффективен как мелкозернистый, так и крупнозернистый параллелизм. Коды OpenMP, однако, будут исполняться только на машинах с общей памятью, и политика размещения данных может стать причиной проблем. Для крупнозернистого параллелизма часто требуется стратегия параллелизации, подобная стратегии MPI, а также внешняя синхронизация.

3.3. Комбинированное программирование

Применяя комбинированную модель программирования, мы должны использовать в своих интересах выгоды обеих моделей. Например, комбинированная программа может позволить политике размещения данных MPI применяться одновременно с мелкозернистым параллелизмом OpenMP. Большинство комбинированных приложений реализуют иерархическую модель; параллелизация MPI находится на высшем уровне, и параллелизация OpenMP располагается ниже. Например, на рис. 1 показана двухмерная сетка, которая геометрически разделена между четырьмя процессами MPI. Эти подмассивы были дополнительно разделены между тремя процессами OpenMP. Данная модель близко отображается на архитектуру SMP кластера, параллелизация MPI происходит между узлами SMP, и параллелизация OpenMP – внутри узлов. В то время, как большинство комбинированных программ реализуют этот тип модели, множество авторов описывают неиерархические модели (см. секцию 2). Например, пересылка сообщений может использоваться в пределах кода, когда это относительно просто осуществить, и параллелизм общей памяти там, где пересылка сообщений трудноосуществима [8].

...


Автобиография    Автореферат    Перечень ссылок    Отчёт о поиске    Библиотека    Моделирующая программа
ДонНТУ    Магистры ДонНТУ