Параллельные вычисления с передачей сообщений

Материал из ЭНЭ
(перенаправлено с «ПВ с передачей сообщений»)
Перейти к: навигация, поиск

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

Основные особенности модели: 1) полное адресное пространство физически разделено на части и 2) поддерживается только явная, эксплицитная параллелизация. Исполнение параллельной программы, построенной по модели с передачей сообщений, включает p процессов, каждый из которых единолично владеет отдельным адресным пространством и может обмениваться данными с прочими процессами.

Некоторые типы параллельного вычислительного оборудования, поддерживающего данную модель: вычислительные кластеры, параллельные ЭВМ с необщей памятью.

Некоторые программные средства, воплощающие данную модель: среда MPI; формально — любая среда, обеспечивающая обмен данными по сети, например, TCP/IP.

Особенности программирования

Из физической разделенности адресного пространства вытекают два следствия, первое из которых: каждый элемент данных должен находиться в одной из частей адресного пространства, и, следовательно, данные должны явно подразделяться и размещаться; это усложняет программирование, но позволяет повышать производительность за счёт бо́льшей ме́стности доступа (locality of access).

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

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

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

Ю.Т.

Источники

  • Введение в параллельное программирование...