Кластерные вычисления

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

Показывать лекцию целиком

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

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

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

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

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

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

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