Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСЫ 2015 / ГОСЫ 2015 / Паралнльное программирование .doc
Скачиваний:
25
Добавлен:
15.02.2016
Размер:
175.62 Кб
Скачать

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

Основу MPI составляют операции передачи сообщений, которые выполняют парные (point-to-point) операции между двумя процессами и коллективные (collective) операции для одновременного взаимодействия всех процессов. Для выполнения парных операций могут использоваться блокирующие и не блокирующие передачи в различных коммуникационных режимах.

Передача и прием сообщений процессами – это базовый коммуникационный механизм MPI. Основными операциями парного обмена являются операции send (послать) и receive (получить).

Каждое сообщение, кроме передаваемых данных содержит информацию, которая используется, для того, чтобы идентифицировать сообщения. Эта информация состоит из фиксированного количества полей, которые в совокупности называются атрибутами сообщения. Это: source, destination, tag, communicator (номер процесса-отправителя сообщения, номер процесса-получателя, тэг, коммуникатор). Целочисленный аргумент тэг присваивает сообщению уникальный номер, по которому функция приема однозначно выбирает из очереди пришедших на процесс сообщений, только ей предназначенное сообщение. Диапазон значений тэга находится в пределах максимального целого значения машинного представления на используемом вычислительном комплексе.

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

В MPI предопределен коммуникатор с именем MPI_COMM_WORLD. Он разрешает операции обмена в созданной после инициализации MPI группе процессов. При инициализации каждому процессу в группе коммуникатора MPI_COMM_WORLD автоматически присваивается уникальный номер, идентификация процессов в С реализации MPI начинается с нуля.

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

1) стандартный MPI_Send, при котором передаваемое сообщение перед отправкой может быть буферизовано, либо нет. Решение о необходимости буферизации принимает MPI, после завершения функции буфер может быть использован повторно, состояние отправленного сообщения может быть различным - сообщение может располагаться в процессе-отправителе, может находиться в процессе передачи, может храниться в процессе-получателе или же может быть принято процессом-получателем при помощи функции MPI_Recv.

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

3) буферизованный MPI_Bsend, предполагает обязательную буферизацию сообщения не зависимо от объема передаваемых данных, перед вызовом функции MPI_Bsend должна быть обязательно вызвана функция выделения системного буфера для копирования в него отправляемого сообщения; функция отправки сообщения завершается сразу же после копирования сообщения в системный буфер,

4) по готовности MPI_Rsend, при котором отправка сообщения начинается только в том случае, если операция приема сообщения на процессе получателе уже инициирована. При выполнении сообщение может быть буферизовано.

Практическое использование режимов:

1. Режим передачи по готовности формально является наиболее быстрым, но используется достаточно редко, т.к. обычно сложно гарантировать готовность операции приема,

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

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

Для функции приема MPI_Recv не существует различных режимов работы.

Соседние файлы в папке ГОСЫ 2015