В
вычислительных системах с распределенной памятью (рис. 1.6) процессоры работают
независимо друг от друга. Для организации параллельных вычислений в таких
условиях необходимо иметь возможность распределять вычислительную нагрузку и
организовать информационное
взаимодействие (передачу данных)
между процессорами.

Решение всех перечисленных вопросов и обеспечивает интерфейс передачи
данных (message passing interface - MPI).
1. В общем плане, для
распределения вычислений между процессорами необходимо проанализировать алгоритм
решения задачи, выделить информационно независимые фрагменты вычислений,
провести их программную реализацию и затем разместить полученные части программы
на разных процессорах. В рамках MPI принят более простой подход – для решения поставленной задачи
разрабатывается одна программа и эта единственная программа запускается
одновременно на выполнение на всех имеющихся процессорах! При этом для того,
чтобы избежать идентичности вычислений на разных процессорах, можно, во-первых,
подставлять разные данные для программы на разных процессорах, а во-вторых, в
MPI имеются средства
для идентификации процессора, на котором выполняется программа (и тем самым,
предоставляется возможность организовать различия в вычислениях в зависимости от
используемого программой процессора).
Подобный способ организации параллельных вычислений получил наименование
модели "одна программа множество
процессов" (single program multiple processes or SPM).
2. Для организации
информационного взаимодействия между процессорами в самом минимальном варианте
достаточно операции приема и передачи данных (при этом, конечно, должна
существовать техническая возможность коммуникации между процессорами – каналы или линии связи) В MPI существует целое множество операций
передачи данных. Они обеспечивают разные способы пересылки данных, реализуют
практически все возможные коммуникационные операции. Именно данные возможности
является наиболее сильной стороной MPI (об этом, в частности
свидетельствует и само название MPI).
Следует отметить, что попытки создания программных средств передачи
данных между процессорами начались предприниматься практически сразу с
появлением локальных компьютерных сетей. Однако подобные средства часто были
неполными и, самое главное, являлись несовместимыми. Таким образом, одна из
самых серьезных проблем в программировании – переносимость программ при переводе
программного обеспечения на другие компьютерные системы – проявлялась при
разработке параллельных программ в самой максимальной степени. Как результат,
уже с 90-х годов стали предприниматься усилия по стандартизации средств
организации передачи сообщений в многопроцессорных вычислительных системах.
Началом работ, непосредственно приведшей к появлению MPI, послужило проведение рабочего
совещания по стандартам для передачи сообщений в среде распределенной памяти
(the
Workshop on Standards
for Message Passing
in a Distributed
Memory Environment, Williamsburg, Virginia, USA, April 1992). По итогам совещания была
образована рабочая группа, позднее преобразованная в международное сообщество
MPI
Forum,
результатом деятельности которых явилось создание и принятие в 1994
г. стандарта интерфейса передачи сообщений (message passing interface - MPI) версии 1.0. В последующие годы
стандарт MPI
последовательно развивался. В 1997 г. был принят стандарт MPI версии 2.0.
Итак, теперь можно пояснить, что означает понятие MPI. Во-первых, MPI - это стандарт, которому должны
удовлетворять средства организации передачи сообщений. Во-вторых, MPI – это программные
средства, которые обеспечивают возможность передачи сообщений и при этом
соответствуют всем требованиям стандарта MPI. Так, по стандарту, эти программные
средства должны быть организованы в виде библиотек программных модулей (библиотеки MPI) и должны быть доступны для
наиболее широко используемых алгоритмических языков C и Fortran. Подобную "двойственность" MPI следует учитывать при
использовании терминологии. Как правило, аббревиатура MPI используется для упоминания
стандарта, а сочетание "библиотека MPI" указывает на ту или иную
программную реализацию стандарта. Однако достаточно часто для краткости
обозначение MPI
используется и для библиотек MPI и, тем самым, для правильной
интерпретации термина следует учитывать контекст.
Положительные стороны MPI:
-
MPI позволяет в значительной степени снизить остроту
проблемы переносимости параллельных программ между разными компьютерными
системами – параллельная программа, разработанная на алгоритмическом языке C
или Fortran с использованием библиотеки MPI, как правило, будет работать на
разных вычислительных платформах,
-
MPI содействует повышению эффективности параллельных
вычислений, поскольку в настоящее время практически для каждого типа
вычислительных систем существуют реализации библиотек MPI, в максимальной
степени учитывающие возможности используемого компьютерного оборудования,
-
MPI уменьшает, в определенном плане, сложность разработки
параллельных программ, т.к., с одной стороны, большая часть рассмотренных в
разделе 3 основных операций передачи данных предусматривается стандартом MPI,
а с другой стороны, уже имеется большое количество библиотек параллельных
методов, созданных с использованием MPI.