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

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

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





Функция определения числа процессов в группе 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. Нарушение авторских прав; Мы поможем в написании вашей работы!




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


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


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Эффективность управления. Общие понятия о сущности и критериях эффективности. Эффективность управления – это экономическая категория, отражающая вклад управленческой деятельности в конечный результат работы организации...

Мотивационная сфера личности, ее структура. Потребности и мотивы. Потребности и мотивы, их роль в организации деятельности...

Классификация ИС по признаку структурированности задач Так как основное назначение ИС – автоматизировать информационные процессы для решения определенных задач, то одна из основных классификаций – это классификация ИС по степени структурированности задач...

Билет №7 (1 вопрос) Язык как средство общения и форма существования национальной культуры. Русский литературный язык как нормированная и обработанная форма общенародного языка Важнейшая функция языка - коммуникативная функция, т.е. функция общения Язык представлен в двух своих разновидностях...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

Основные симптомы при заболеваниях органов кровообращения При болезнях органов кровообращения больные могут предъявлять различные жалобы: боли в области сердца и за грудиной, одышка, сердцебиение, перебои в сердце, удушье, отеки, цианоз головная боль, увеличение печени, слабость...

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