Опубликован: 11.02.2010 | Уровень: специалист | Доступ: платный | ВУЗ: Санкт-Петербургский государственный университет
Лекция 1:

Введение

Лекция 1: 1234 || Лекция 2 >

Модели параллельного программирования

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

Модель передачи сообщений

Основные особенности данного подхода:

  • Программа порождает несколько задач.
  • Каждой задаче присваивается свой уникальный идентификатор.
  • Взаимодействие осуществляется посредством отправки и приема сообщений.
  • Новые задачи могут создаваться во время выполнения параллельной программы, несколько задач могут выполняться на одном процессоре.
Модель параллелизма данных

Основные особенности данного подхода:

  • Одна операция применяется к множеству элементов структуры данных. Программа содержит последовательность таких операций.
  • "Зернистость" вычислений мала.
  • Программист должен указать транслятору, как данные следует распределить между задачами.
Модель общей памяти

В модели общей (разделяемой) памяти задачи обращаются к общей памяти, имея общее адресное пространство и выполняя операции считывания/записи. Управление доступом к памяти осуществляется с помощью разных механизмов, таких, например, как семафоры. В рамках этой модели не требуется описывать обмен данными между задачами в явном виде. Это упрощает программирование. Вместе с тем особое внимание приходится уделять соблюдению детерминизма, таким явлениям, как "гонки за данными" и т. д.

Законы Амдала

Законы Амдала составляют теоретическую основу оценок достижимой производительности параллельных программ. Они сформулированы для некоторой идеализированной модели параллельных вычислений, в которой, например, не учитывается латентность (конечное время передачи данных) коммуникационной среды и т. д.

1-й закон

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

2-й закон

Пусть время выполнения алгоритма на последовательной машине T_1, причем T_s - время выполнения последовательной части алгоритма, а T_p - параллельной. Тогда при выполнении той же программы на идеальной параллельной машине, содержащей N процессорных элементов коэффициент ускорения:

K=\frac{T_1}{T_2}=\frac{T_s+T_p}{T_s+\frac{T_p}{N}}=\frac{1}{S+\frac{P}{N}}

где S=\frac{T_s}{T_s+T_p} и P=\frac{T_p}{T_s+T_p} - относительные доли последовательной и параллельной частей (S + P = 1). Графическое представление закона Амдала дано на рис. 1.8.

3-й закон

Пусть система состоит из N простых одинаковых процессорных элементов, тогда при любом режиме работы K\le \frac{1}{P}

Зависимость ускорения от доли параллельного кода и числа процессоров в законе Амдала

Рис. 1.8. Зависимость ускорения от доли параллельного кода и числа процессоров в законе Амдала

Две парадигмы параллельного программирования

На рис. 1.9 представлен информационный граф, показывающий, что в общем случае в программе присутствуют как параллелизм данных, так и параллелизм задач.

Параллелизм задач и параллелизм данных

увеличить изображение
Рис. 1.9. Параллелизм задач и параллелизм данных

Параллелизм данных

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

Векторизация или распараллеливание в рамках данного подхода выполняются во время трансляции. В этом случае при разработке параллельного приложения от программиста требуется:

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

Основные особенности данного подхода перечислены ниже:

  • обработкой данных управляет одна программа;
  • пространство имен является глобальным;
  • параллельные операции над элементами массива выполняются одновременно на всех доступных данной программе процессорах.

При программировании на основе параллелизма данных часто используются специализированные языки или надстройки над языками - DVM Fortran, HPF (High Perfomance Fortran) и другие.

Реализация модели параллелизма данных требует поддержки параллелизма на уровне транслятора. Такую поддержку могут обеспечивать:

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

Параллелизм задач

Петли, образованные в информационном графе "толстыми стрелками", соответствуют параллелизму задач, идея которого основана на разбиении вычислительной задачи на несколько относительно самостоятельных подзадач. Каждая подзадача выполняется на своем процессоре. Данный подход ориентирован на архитектуру MIMD.

В рамках подхода, основанного на параллелизме задач, для каждой подзадачи пишется своя собственная программа на обычном языке программирования, чаще всего это Fortran и С. Подзадачи должны обмениваться результатами своей работы, получать исходные данные. Практически такой обмен осуществляется вызовом процедур специализированной библиотеки. Программист может контролировать распределение данных между различными процессорами и различными подзадачами, а также обмен данными.

Проблемы, связанные с данным подходом:

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

Привлекательные особенности:

  • большая гибкость и большая свобода, предоставляемая программисту в разработке программы, эффективно использующей ресурсы параллельного компьютера;
  • возможность достижения максимального быстродействия.

Основными инструментами программирования являются специализированные библиотеки ( MPI - Message Passing Interface, PVM - Parallel Virtual Machines ).

Лекция 1: 1234 || Лекция 2 >
Сергей Лебедев
Сергей Лебедев
Россия
Паулус Шеетекела
Паулус Шеетекела
Россия, ТГТУ, 2010