Санкт-Петербургский государственный университет
Опубликован: 11.10.2012 | Доступ: свободный | Студентов: 955 / 173 | Длительность: 05:14:00
Лекция 6:

Группы процессов и коммуникаторы

< Лекция 5 || Лекция 6: 1234 || Лекция 7 >
Аннотация: Шестая лекция посвящена работе с группами процессов и коммуникаторами. Рассматриваются вопросы создания групп процессов, управления коммуникаторами, организации обменов между группами процессов, приводятся примеры.

Презентацию к данной лекции Вы можете скачать здесь.

Группы процессов и коммуникаторы

В MPI имеются средства создания и преобразования коммуникаторов, которые дают возможность программисту в дополнение к стандартным предопределенным объектам создавать свои собственные. Это позволяет использовать разнообразные схемы взаимодействия процессов.

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

Группы процессов

Группой называют упорядоченное множество процессов.

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

В MPI имеется специальная предопределенная пустая группа MPI_GROUP_EMPTY.


Коммуникаторы

Коммуникаторы бывают двух типов:

  1. интракоммуникаторы - для операций внутри одной группы процессов;
  2. интеркоммуникаторы - для двухточечного обмена между двумя группами процессов.

Интракоммуникатором является MPI_COMM_WORLD.

В MPI-программах чаще используются интракоммуникаторы.

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

Можно организовать обмены между двумя непересекающимися группами процессов.

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

Интеробмены реализуются с помощью интеркоммуникаторов, которые объединяют две группы процессов общим контекстом.

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


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


< Лекция 5 || Лекция 6: 1234 || Лекция 7 >