Таненбаум Э.- Архитектура компьютера. стр.493

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

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

MPI поддерживает множество коммуникационных операций. Вот как выглядит операция для отправки сообщений:

MPI_Send(буфер. число_элементов, тип_данных, получатель, тег, коммуникатор)

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

MPI_Recv{Ъбуфер, число_элементов, тип_данных, отправитель , те г, коммуникатор, Ъстатус)

Этот вызов говорит о том, что получатель ждет от отправителя сообщение типа тип_данных с заданным тегом.

MPI поддерживает четыре базовых коммуникационных режима. Первый режим — синхронный. В нем отправитель не может начать передачу данных, пока получатель не сделает вызов MPIRecv. Второй режим — буферизация. В этом режиме ограничение первого режима не действует. Третий режим — стандартный. Он зависит от конкретной реализации, то есть может быть реализован либо синхронный режим, либо режим буферизации. Четвертый режим — готовность. Здесь, как и в синхронном режиме, отправитель требует, чтобы получатель был доступен, но без проверки. Каждый из этих примитивов имеет блокирующую и неблокирующую версии, что в сумме дает 8 примитивов. Получение может быть только в двух вариантах: блокирующим и неблокирующим.

MPI поддерживает разнообразные формы коллективного взаимодействия. В любой форме такого взаимодействия все процессы в группе должны делать вызов с совместимыми параметрами. В противном случае возникает ошибка. Например, в типичной форме коллективного взаимодействия процессы могут быть организованы в виде древовидной структуры, в которой данные передаются от листьев к корню, подвергаясь на каждом шаге определенной обработке (это может быть сложение значений или поиск максимума).

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

В MPI-2 была добавлена поддержка динамических процессов, удаленного доступа к памяти, неблокирующего коллективного взаимодействия, масштабируемого ввода-вывода, обработки в режиме реального времени и многого другого. В научном сообществе годами шла «война» между сторонниками MPI и PVM. Сторонники PVM утверждали, что эту систему проще изучать и легче использовать. Почитатели MPI в ответ говорили, что MPI поддерживает больше функций и, кроме того, эта система стандартизована, что подтверждается официальным документом. Соглашаясь с этим, защитники PVM возражали, что отсутствие всех бумаг, связанных с бюрократическим процессом стандартизации, — еще не повод отказываться от системы. В конечном итоге, когда все было сказано и сделано, победа досталась MPI.


⇐ Предыдущая страница| |Следующая страница ⇒