Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Функции работы с группами





Функция определения числа процессов в группе MPI_Group_size.

С:

MPI_Group_size(MPI_Group group, int *size)

FORTRAN:

MPI_GROUP_SIZE(GROUP, SIZE, IERROR)

INTEGER GROUP, SIZE, IERROR

IN group - группа;
OUT size - число процессов в группе.

Функция возвращает число процессов в группе. Если group = MPI_GROUP_EMPTY, тогда size = 0.

Функция определения номера процесса в группе MPI_Group_rank.

С:

MPI_Group_rank(MPI_Group group, int *rank)

FORTRAN:

MPI_GROUP_RANK(GROUP, RANK, IERROR)

INTEGER GROUP, RANK, IERROR

IN group - группа;
OUT rank - номер процесса в группе.

Функция MPI_Group_rank возвращает номер процесса в группе, вызвавшего функцию. Если процесс не является членом группы, то возвращается значение MPI_UNDEFINED.

Функция установки соответствия между номерами процессов в двух группах MPI_Group_translate_ranks.

С:

MPI_Group_translate_ranks (MPI_Group group1, int n, int *ranks1,

MPI_Group group2, int *ranks2)

FORTRAN:

MPI_GROUP_TRANSLATE_RANKS(GROUP1,N, RANKS1, GROUP2,

RANKS2, IERROR)

INTEGER GROUP1, N, RANKS1(*), GROUP2, RANKS2(*), IERROR

IN group1 - группа1;
IN n - число процессов, для которых устанавливается соответствие;
IN ranks1 - массив номеров процессов из 1-й группы;
IN group2 - группа2;
OUT ranks2 - номера тех же процессов во второй группе.

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

Для создания новых групп в MPI имеется 8 функций. Группа может быть создана либо с помощью коммуникатора, либо с помощью операций над множествами процессов других групп.

Функция создания группы с помощью коммуникатора MPI_Comm_group.

С:

MPI_Comm_group(MPI_Comm comm, MPI_Group *group)

FORTRAN:

MPI_COMM_GROUP(COMM, GROUP, IERROR)

INTEGER COMM, GROUP, IERROR

IN comm - коммуникатор;
OUT group - группа.

Функция создает группу group для множества процессов, входящих в область связи коммуникатора comm.

Следующие три функции имеют одинаковый синтаксис и создают новую группу как результат операции над множествами процессов двух групп.

С:

MPI_Group_union(MPI_Group group1, MPI_Group group2,

MPI_Group *newgroup)

MPI_Group_intersection(MPI_Group group1, MPI_Group group2,

MPI_Group *newgroup)

MPI_Group_difference(MPI_Group group1, MPI_Group group2,

MPI_Group *newgroup)

FORTRAN:

MPI_GROUP_UNION(GROUP1, GROUP2, NEWGROUP, IERROR)

MPI_GROUP_INTERSECTION(GROUP1, GROUP2, NEWGROUP, IERROR)

MPI_GROUP_DIFFERENCE(GROUP1, GROUP2, NEWGROUP, IERROR)

INTEGER GROUP1, GROUP2,NEWGROUP, IERROR

IN group1 - первая группа;
IN group2 - вторая группа;
OUT newgroup - новая группа.

Операции определяются следующим образом:

Union - формирует новую группу из элементов 1-й группы и из элементов 2-й группы, не входящих в 1-ю (объединение множеств).
Intersection - новая группа формируется из элементов 1-й группы, которые входят также и во 2-ю. Упорядочивание как в 1-й группе (пересечение множеств).
Difference - новую группу образуют все элементы 1-й группы, которые не входят во 2-ю. Упорядочивание как в 1-й группе (дополнение множеств).

Созданная группа может быть пустой, что эквивалентно MPI_GROUP_EMPTY.

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

С:

MPI_Group_incl(MPI_Group group, int n, int *ranks,

MPI_Group *newgroup)

MPI_Group_excl(MPI_Group group, int n, int *ranks,

MPI_Group *newgroup)

FORTRAN:

MPI_GROUP_INCL(GROUP, N, RANKS, NEWGROUP, IERROR)

MPI_GROUP_EXCL(GROUP, N, RANKS, NEWGROUP, IERROR)

INTEGER GROUP, N, RANKS(*), NEWGROUP, IERROR

IN group - существующая группа;
IN n - число элементов в массиве ranks;
IN ranks - массив номеров процессов;
OUT newgroup - новая группа.

Функция MPI_Group_incl создает новую группу, которая состоит из процессов существующей группы, перечисленных в массиве ranks. Процесс с номером i в новой группе есть процесс с номером ranks[i] в существующей группе. Каждый элемент в массиве ranks должен иметь корректный номер в группе group, и среди этих элементов не должно быть совпадающих.

Функция MPI_Group_excl создает новую группу из тех процессов group, которые не перечислены в массиве ranks. Процессы упорядочиваются как в группе group. Каждый элемент в массиве ranks должен иметь корректный номер в группе group, и среди них не должно быть совпадающих.

Две следующие функции по смыслу совпадают с предыдущими, но используют более сложное формирование выборки. Массив ranks заменяется двумерным массивом ranges, представляющим собой набор триплетов для задания диапазонов процессов.

С:

MPI_Group_range_incl(MPI_Group group, int n, int ranges[][3],

MPI_Group *newgroup)

MPI_Group_range_excl(MPI_Group group, int n, int ranges[][3],

MPI_Group *newgroup)

FORTRAN:

MPI_GROUP_RANGE_INCL(GROUP, N, RANGES, NEWGROUP, IERROR)

MPI_GROUP_RANGE_EXCL(GROUP, N, RANGES, NEWGROUP, IERROR)

INTEGER GROUP, N, RANGES(3,*), NEWGROUP, IERROR

Каждый триплет имеет вид: нижняя граница, верхняя граница, шаг.

Уничтожение созданных групп выполняется функцией MPI_Group_free.

С:

MPI_Group_free(MPI_Group *group)

FORTRAN:

MPI_GROUP_FREE(GROUP, IERROR)

INTEGER GROUP, IERROR

INOUT group - уничтожаемая группа.







Дата добавления: 2015-09-15; просмотров: 405. Нарушение авторских прав; Мы поможем в написании вашей работы!




Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Тема 2: Анатомо-топографическое строение полостей зубов верхней и нижней челюстей. Полость зуба — это сложная система разветвлений, имеющая разнообразную конфигурацию...

Виды и жанры театрализованных представлений   Проживание бронируется и оплачивается слушателями самостоятельно...

Что происходит при встрече с близнецовым пламенем   Если встреча с родственной душой может произойти достаточно спокойно – то встреча с близнецовым пламенем всегда подобна вспышке...

Классификация и основные элементы конструкций теплового оборудования Многообразие способов тепловой обработки продуктов предопределяет широкую номенклатуру тепловых аппаратов...

Именные части речи, их общие и отличительные признаки Именные части речи в русском языке — это имя существительное, имя прилагательное, имя числительное, местоимение...

Интуитивное мышление Мышление — это пси­хический процесс, обеспечивающий познание сущности предме­тов и явлений и самого субъекта...

Studopedia.info - Студопедия - 2014-2025 год . (0.011 сек.) русская версия | украинская версия