Пакет программ MPI

Пакет MPI (Message-Passing Interface – интерфейс с передачей сообщений) для программирования мультикомпьютеров содержит значительно большее количество библиотечных вызовов (процедур) и параметров на каждый вызов, чем PVM.

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

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

Типы передаваемых данных. Сообщения могут быть разных типов: символьные, целочисленные (short, regular и long integers), с обычной и удвоенной точностью, с плавающей точкой и др. Из существующих типов можно образовать новые типы сообщений.

Операции коммуникации. Пакет MPI поддерживает большое количество операций коммуникации. Например, используемая операция MPI_Send для отправки сообщения в пункт назначения имеет поля:

  • buffer – пересылается содержимое буфера;
  • count – число элементов буфера;
  • datajypt– тип отправляемых данных;
  • tag – пометка для получателя, чтобы он смог принять сообщение только с данным тегом;
  • destination – индекс из списка процессов, который указывает, к какой группе процессов относится целевой процесс.

Вызов для получения отправленного сообщения MPIRecv имеет подобные поля. В нем сообщается, что получатель ищет сообщение определенного типа из определенного источника с определенным тегом.

Пакет MPI поддерживает четыре основных типа коммуникации:

  • синхронный тип, в котором отправитель не может начать передачу данных, пока получатель не вызовет процедуру MPI Recv;
  • коммуникацию с использованием буфера, при которой ограничение для синхронного типа недействительно;
  • стандартный тип, который зависит от реализации и может быть либо синхронным, либо с использованием буфера;
  • • тип, сходный с синхронным типом: отправитель требует, чтобы получатель был доступен, но без проверки.

Каждый из типов коммуникации бывает двух видов: блокирующим и неблокирующим.

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

 
< Пред   СОДЕРЖАНИЕ     След >