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

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

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

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

В модели передачи сообщений параллельная программа выполняется на множестве процессов, каждый из которых имеет свое собственное адресное пространство. Обмен данными и синхронизация между процессами производится посредством передачи сообщений. В 1993 году был разработан стандарт передачи сообщений MPI (Message Passing Interface) [2]. Внедрение этого стандарта позволило увеличить возможность переносимости программ, разрабатываемых в рамках разных подходов, с использованием модели передачи сообщений.

Достоинства MPI:

·          Возможность использования в языках Фортран, Си, Си++;

·          Предоставление возможностей для совмещения обменов сообщениями и вычислений;

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

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

·          Широкий набор редукционных операций (например, суммирование расположенных на разных процессорах данных, или нахождение их максимальных или минимальных значений), не только упрощающих работу программиста, но и допускающих гораздо более эффективную реализацию, чем это может сделать прикладной программист, не имеющий информации о характеристиках коммуникационной системы;

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

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

Тем не менее, интерфейс библиотеки MPI получился достаточно громоздким, не только для использования программистом, но и для реализации. В настоящее время не существует реализаций MPI, в которых в полной мере обеспечивается совмещение обменов с вычислениями.

В 1997 году появился стандарт MPI-2 [2]. На сегодняшний день существует, хотя и не полная, реализация стандарта MPI-2. Он предусматривает развитие в следующих направлениях:

·          Динамическое создание и уничтожение процессов;

·          Односторонние коммуникации и средства синхронизации для организации взаимодействия процессов через общую память (для эффективной работы на системах с непосредственным доступом процессоров к памяти других процессоров);

·          Параллельные операции ввода-вывода (для эффективного использования существующих возможностей параллельного доступа многих процессоров к различным дисковым устройствам).


2.2 Другие модели

Модель неструктурированных нитей. Программа представляется как совокупность нитей (threads), способных выполняться параллельно и имеющих общее адресное пространство. Имеющиеся средства синхронизации нитей позволяют организовывать доступ к общим ресурсам. Многие системы программирования поддерживают эту модель: Win32 threads, POSIX threads, Java threads.

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

Модель параллелизма по управлению. Эта модель возникла в применении к мультипроцессорам. Вместо терминов нитей предлагалось использовать специальные конструкции – параллельные циклы и параллельные секции. Создание, уничтожение нитей, распределение на них витков параллельных циклов или параллельных секций – всё это брал на себя компилятор. Стандартом для этой модели сейчас является интерфейс OpenMP [4].

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

Модель параллелизма по данным и управлению – DVM (Distributed Virtual Machine, Distributed Virtual Memory) [5]. Эта модель была разработана в Институте прикладной математики им. М. В. Келдыша РАН.



Информация о работе «Диалоговая оболочка отладчика MPI-программ»
Раздел: Информатика, программирование
Количество знаков с пробелами: 44644
Количество таблиц: 0
Количество изображений: 8

Похожие работы

Скачать
112646
5
10

... работы пользователя в различной сетевой среде и обеспечивать студентов знаниями в области сетевых технологий. - самостоятельная работа студентов с литературой и в компьютерных классах. Программа курса "Администрирование в информационных системах и администрирование виртуальных машин" определяет подготовку студентов специальности "Информационные системы и технологии" в использовании сетевых ...

0 комментариев


Наверх