Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_MPI_OpenMP.doc
Скачиваний:
4
Добавлен:
16.11.2019
Размер:
1.09 Mб
Скачать

6. Mpi_Group _excl(group, n, ranks, newgroup)

IN group группа (дескриптор)

IN n количество элементов в массиве номеров (целое)

IN ranks массив целочисленных номеров в group, не входящих в newgroup

OUT newgroup новая группа, полученная из прежней, сохраняющая порядок, определенный group (дескриптор)

Создает новую группу, путем удаления из group процессов с номерами ranks[0] ,...ranks[n-1]. Если n = 0, то newgroup идентична group.

Деструктор групп - MPI_Group _free(group)

INOUT group идентификатор группы (дескриптор)

Функции доступа к коммуникаторам

Все следующие операции являются локальными.

1. Mpi_Comm_size (comm, size)

IN comm коммуникатор (дескриптор)

OUT size количество процессов в группе comm (целое)

Эта функция указывает число процессов в коммуникаторе. Для MPI_COMM_WORLD она указывает общее количество доступных процессов.

2. Mpi_Comm_rank(comm, rank)

IN comm коммуникатор (дескриптор)

OUT rank номер вызывающего процесса в группе comm (целое)

Функция MPI_Comm_rank возвращает номер процесса в частной группе коммуникатора. Ее удобно использовать cовместно с MPI_Comm_size.

3. Mpi_Comm_compare(comm1, comm2, result)

IN comm1 первый коммуникатор (дескриптор)

IN comm2 второй коммуникатор (дескриптор)

OUT result результат (целое)

Функция MPI_Comm_compare сравнивает контексты коммуникаторов. Результат MPI_IDENT имеет место тогда и только тогда, когда comm1 и comm2 являются дескрипторами для одного и того же объекта. Результат MPI_CONGRUENT имеет место в том случае, если исходные группы идентичны по компонентам и нумерации; в этом случае коммуникаторы отличаются только контекстом. Результат MPI_SIMILAR имеет место, если члены группы обоих коммуникаторов являются одинаковыми, но порядок их нумерации различен. В противном случае выдается результат MPI_UNEQUAL.

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

Ниже перечисленные функции являются коллективными и вызываются всеми процессами в группе, связанной с comm. В MPI для создания нового коммуникатора необходим исходный коммуникатор. Основным коммуникатором для всех MPI коммуникаторов является коммуникатор MPI_COMM_WORLD.

1. Mpi_Comm_dup(comm, newcomm)

IN comm коммуникатор (дескриптор)

OUT newcomm копия comm (дескриптор)

Функция MPI_Comm_dup дублирует существующий коммуникатор comm, возвращает в аргументе newcomm новый коммуникатор с той же группой.

2. Mpi_Comm_create(comm, group, newcomm)

IN comm коммуникатор (дескриптор)

IN group группа, являющаяся подмножеством группы comm (дескриптор)

OUT newcomm новый коммуникатор (дескриптор)

Функция создает новый коммуникатор newcomm с коммуникационной группой, определенной аргументом group и новым контекстом. Из comm в newcomm не передается никакой кэшированной информации. Функция возвращает MPI_COMM_NULL для процессов, не входящих в group. Запрос неверен, если не все аргументы в group имеют одинаковое значение или если group не является подмножеством группы, связанной с comm. Заметим, что запрос должен быть выполнен всеми процессами в comm, даже если они не принадлежат новой группе.