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

3. Mpi_Group_translate_ranks (mpi_Group group1, int n, int *ranks1, mpi_Group group2, int *ranks2)

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

IN n число номеров в массивах ranks1 и ranks2 (целое)

IN ranks1 массив из номеров процессов в группе1

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

OUT ranks2 массив соответствующих номеров процессов в группе2, MPI_UNDEFINED, если соответствие отсутствует.

Функция MPI_Group_translate_ranks определяет относительную нумерацию одинаковых процессов в двух различных группах. Например, если известны номера некоторых процессов в MPI_COMM_WORLD, то можно узнать их номера в подмножестве этой группы.

4. Mpi_Group _compare(group1, group2, result)

group1 первая группа (дескриптор)

group2 вторая группа (дескриптор)

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

Функция MPI_Group_compare сравнивает группы. Если члены группы и их порядок в обеих группах одинаковы, результат будет MPI_IDENT. Если члены группы одинаковы, но порядок различен, то результат будет MPI_SIMILAR. В остальных случаях - MPI_UNEQUAL.

Конструкторы групп

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

MPI не имеет механизма для формирования группы с нуля – группа может формироваться только на основе другой, предварительно определенной группы. Базовая группа, на основе которой определены все другие группы, является группой, связанной с коммуникатором MPI_COMM_WORLD (через функцию MPI_COMM_GROUP).

1. MPI_Comm_group(MPI_Comm comm, MPI_Group *group)

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

OUT group группа, соответствующая comm (дескриптор)

Функция MPI_Comm_group возвращает в group дескриптор группы из comm.

2. MPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group *newgroup)

IN group1 первая группа (дескриптор)

IN group2 вторая группа (дескриптор)

OUT newgroup объединенная группа (дескриптор)

Объединение (union) содержит все элементы первой группы (group1) и следующие за ними элементы второй группы (group2), не входящие в первую группу.

3. MPI_Group_intersection(MPI_Group group1, MPI_Group group2,MPI_Group *newgroup)

IN group1 первая группа (дескриптор)

IN group2 вторая группа (дескриптор)

OUT newgroup группа, образованная пересечением (дескриптор)

Пересечение (intersect) содержит все элементы group1, которые также находятся в group2 и упорядоченные, как в первой группе.

4. MPI_Group_difference(MPI_Group group1, MPI_Group group2,MPI_Group *newgroup)

IN group1 первая группа(дескриптор)

IN group2 вторая группа (дескриптор)

OUT newgroup исключенная группа (дескриптор)

Разность (difference) содержит все элементы group1, которые не находятся в group2.

5. MPI_ Group_incl(group, n, ranks, newgroup)

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

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

IN ranks номера процессов в group, перешедших в новую группу (массив целых)

OUT newgroup новая группа, полученная из прежней, упорядоченная согласно ranks

Cоздает новую группу, которая состоит из n процессов исходной группы group с номерами rank[0],..., rank[n-1]; процесс с номером i в newgroup есть процесс с номером ranks[i] в group. Если n = 0, то newgroup имеет значение MPI_GROUP_EMPTY.