ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
67
Подпрограмма MPI_Group_intersection создает новую группу newgroup из
пересечения групп group1 и group2:
int MPI_Group_intersection(MPI_Group group1, MPI_Group group2,
MPI_Group *newgroup)
MPI_GROUP_INTERSECTION(GROUPI, GROUP2, NEWGROUP, IERR)
Подпрограмма MPI_Group_union создает группу newgroup, объединяя группы
group1 и group2:
int MPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group
*newgroup)
MPI_GROUP_UNION(GROUPI, GROUP2, NEWGROUP, IERR)
Имеются и другие подпрограммы-конструкторы новых групп. Есть и деструк-
тор. Вызов подпрограммы MPI_Group_free уничтожает группу group:
int MPI_Group_free(MPI_Group *group)
MPI_GROUP_FREE(GROUP, IERR)
Получение информации о группе
Для определения количества процессов (size) в группе (group) используется
подпрограмма MPI_Group_size:
int MPI_Group_size(MPI_Group group, int *size)
MPI_GROUP_SIZE (GROUP, SIZE, IERR)
Подпрограмма MPI_Group_rank возвращает ранг (rank) процесса в группе
group:
int MPI_Group_rank(MPI_Group group, int *rank)
MPI_GROUP_RANK(GROUP, RANK, IERR)
Если процесс не входит в указанную группу, возвращается значение
MPI_UNDEFINED.
Процесс может входить в несколько групп. Подпрограмма MPI_Group_ trans-
late_ranks преобразует ранг процесса в одной группе в его ранг в другой группе:
int MPI_Group_translate_ranks(MPI_Group group1, int n, int *
ranks1,
MPI_Group group2, int *ranks2)
MPI_GROUP_TRANSLATE_RANKS(GROUP1, N, RANKS1, GROUP2, RANKS2,
IERR)