Опубликован: 22.04.2008 | Доступ: свободный | Студентов: 527 / 50 | Оценка: 4.50 / 4.75 | Длительность: 06:55:00
Специальности: Программист
Дополнительный материал 8:

Управление процессами в MPI

Цель - изучить понятия "группа" и "коммуникатор" и средства их создания и управления ими в MPI-программах.

Типичный сценарий формирования новых групп MPI-процессов на основе исходной глобальной группы MPI_COMM_WORLD и организации взаимодействия внутри новых групп состоит из следующих шагов:

  1. Получить обработчик глобальной группы, связанной с коммуникатором MPI_COMM_WORLD, используя функцию MPI_Comm_group.
  2. Создать новую группу как подмножество глобальной группы, используя функцию MPI_Group_incl.
  3. Создать новый коммуникатор для вновь созданной группы, используя функцию MPI_Comm_create.
  4. Получить новый ранг процесса во вновь созданном коммуникаторе, используя функцию MPI_Comm_rank.
  5. Выполнить обмен сообщениями между процессами в рамках вновь созданной группы.
  6. По окончании работы, освободить (уничтожить) группу и коммуникатор, используя функции MPI_Group_free и MPPI_Comm_free.

Схематически, такой сценарий можно представить следующим рисунком:


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

Запустить на выполнение данную программу с ключом -np 8. Объяснить результаты работы программы, выводимые на консоль.


Задача 2. Модифицировать текст предыдущей программы таким образом, чтобы

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