Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций 4.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
889.86 Кб
Скачать

11.1.4. Синхронизация работы задач

Групповые функции являются эффективным средством для координации действий множества задач в PVM. Они позволяют любому подмножеству выполняемых задач объединиться в группу, которая идентифицируется по имени, заранее известному ее членам, и организовать внутри группы такие виды взаимодействия задач как:

  • синхронизация действий;

  • обмен сообщениями;

  • совместное выполнение глобальных операций.

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

Групповые функции составляют содержание отдельной библиотеки libgpvm3, которую следует при необходимости подгрузить во время компоновки к пользовательской программе.

11.2. MPI

11.2.1. Общие сведения

MPI - это стандарт на программный инструментарий для обеспечения связи между ветвями параллельного приложения. MPI - message passing interface - библиотека функций, предназначенная для поддержки работы параллельных процессов в терминах передачи сообщений

Современные реализации MPI 1.1. 1997-1998 г. MPI 2

MPI расшифровывается как "Message passing interface" ("Взаимодействие через передачу сообщений").

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

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

Минимально в состав MPI входят: библиотека программирования (заголовочные и библиотечные файлы для языков Си, Си++ и Фортран) и загрузчик приложений.

Дополнительно включаются: профилирующий вариант библиотеки (используется на стадии тестирования параллельного приложения для определения оптимальности распараллеливания); загрузчик с графическим и сетевым интерфейсом для X-Windows и проч.

11.2.2. Основные понятия

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

Номер процесса - целое неотрицательное число, являющееся уникальным атрибутом каждого процесса.

Атрибуты сообщения - номер процесса-отправителя, номер процесса-получателя и идентификатор сообщения. Для них заведена структура MPI_Status, содержащая три поля: MPI_Source (номер процесса отправителя), MPI_Tag (идентификатор сообщения), MPI_Error (код ошибки); могут быть и добавочные поля.

Идентификатор сообщения (msgtag) - атрибут сообщения, являющийся целым неотрицательным числом, лежащим в диапазоне от 0 до 32767.

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