В.Д. Корнеев - Параллельное программирование в MPI (1162616), страница 8
Текст из файла (страница 8)
3.2.1. Группы Группа — заказанный набор идентификаторов процессов; процессы — зависимые от выполнения объекты. Каждый процесс в группе обозначается рангом. Ранги в группе — это последовательные целые числа, начинающиеся с нуля. Над группами определены теоретико- множественные операции, позволяющие строить области связи между процессами произвольной сложности. Группы представлены непрозрачными объектами группы и, следовэ тельно, не могут быть непосредственно переданы от одного процесса к другому. Имеется специальная предопределенная группа: МР1 6ЮОР ЕМРТУ, которая является группой без элементов.
Предопределенная константа МР1 0к00Р Й011 — есть значение, используемое для недействительного заголовка группы. МР1 0Ю0Р ЕМРТУ является именем пустой группы, оно не должно быть перепутано с МР1 0ЮОР М01.1., которая является недействительным именем группы. Первое нмя может использоваться как аргумент для операций над группами; второе устанавливается, когда группа освобождена, в не имеющий силу аргумент.
Операции над группами обсуждены в п. 3.3. 27 о.й. Краткий обзор 3.2,2. Коммуникаторы Коммуникатор (переключатель каналов) — объект с рядом атрибутов и простыми правилами, которые управляют его созданием, использованием и разрушением. Переключатель каналов определяет область связи, которая может использоваться для точечных и коллективных взаимодействий между процессами. Имеется два типа коммуникаторов: е 1ппгасопицптсапог используется для связи внутри отдельной группы процессов; такая связь называется 1л1га-дгоир связью.
Это группа процессов и топология, описывающая логическое расположение процессов в группе. Топология процессов приведена в гл. 4. 1ппгасоппппппсапог'ы также используются для коллективных операций внутри группы процессов. ° 1ппегсопппцп1сапог используется для точечной связи между двумя непересекающимися группами процессов. Такая связь называется 1л1ег-дгоир связью.
Установленные атрибуты гппегсоиицп1сасог'а состоят из двух групп. Никакая топология не связывается с гппегсопипп1сасог'ом. Таблица ниже суммирует разницу между 1лггасоиицпгсасог'ми и тпсгасоиицпзсасог'ми. Действия дппгасокиппгсапог'а описаны в и. 3.4, и действия гппегсоивпп1сасог'а обсуждены в п. 3.5. 3.2.3. Области связи В МР1 внутри области связи реализуется некоторое множество ро1цФ-Фо-ро1пй или коллективных операций (см. гл. б, 7).
Такая область ~вязи представлена набором коммуникаторов (переключателей каналов) с совместимыми значениями, один коммуникатор при каждом из участвующих процессов; каждый коммуникатор есть местное представление области глобальной связи. Если эта область для 1псга-йгопр связи, то все коммуникаторы — зппгасоиипп1сасог'ы и все имеют тот же самый атрибут коммуникатора. Каждый коммуникатор идентифицирует все другие коммуникаторы. Коммуникатор — это массив указателей на другие коммуникаторы. Областыпсга-бгопр связи определена набором коммуникаторов так что: ° их каналы формируют полный граф: каждый коммуникатор связан со всеми коммуникаторами в наборе, включая себя; ° каналы имеют совместимые индексы: в каждом коммуникаторе, связь т указывает на коммуникатор для процесса з.
Эта распределенная структура данных коммуникатора иллюстрируется на рис 3.1, для случая из трех членов коммуникатора Описание области тпсег-бгопр связи (межгрупповой связи) в и. 3.5. В ро1пФ-йо-ро1пп связи соответствующие друг другу передающая и принимающая функция должны иметь аргументы коммуникатора, которые представляют ту же самую область связи. Ранг процессов интерпретируется относительно связанного коммуникатором набора процессов.
Таким образом, в области зпсга-бгоцр связи, ранги процесса интерпретируются относительно множества процессов, связанных с коммуникатором. Точно так же коллективный запрос связи вовлекает все процессы множества в области зппга-ягопр связи, и все процессы должны использовать аргумент коммуникатора, Я. Первключапьели каналов Рис.
3.1. Распределенная структура данных коммуникатора для области ипга-связи который представляет зту область. 1псегсошшип1сасог'ы не могут использоваться в коллективных операциях связи. Каждый коммуникатор связан с идентификатором, который является уникальным и идентичным во всех коммуникаторах, определяющих одну область Тппга-Егопр связи. Этот идентификатор является как бы контекстом связи. Таким образом, каждое сообщение обозначено тегом с контекстом аргумента коммуникатора.
Этот контекст идентифицирует соответствующий коммуникатор при процессе получения данных. 3.2.4. Совместимость Имеется уникальная, предопределенная универсальная связь, которая включает все процессы, доступные параллельной программе, когда он была начата; процессам назначаются последовательные ранги, Участники ро1п1-1о-ро)пФ связи идентифицированы их рангами; коллективная связь (типа Ьгоас)савФ) всегда вовлекает все процессы, участвующие в операции. Универсальным и предопределенным переключателем каналов является МР1 СОИМ МОЮ.О. З.З. Операции над группами Этот пункт описывает операции над группами процессов в МР1.
Эти действия локальные, и их выполнение не требует межпроцессорной связи. МР1 допускает операции над группами, но не коммуникаторами. Здесь и везде далее запись описываемых функций будет производиться в трех видах: в общем виде с пояснениями параметров функции, на языке С и на языке Росвгап 90.
3.3.1. Вспомогательные информационные функции МР1 ОКООР БХЕЕ(Егопр, вйне) 1М Егопр иня группы ООТ вгне количество процессов в группе йпС МР1 Огопр вйхе(МР1 Огопр Егопр, йпс взане) МР1 ОЮОР Б12Е(ОКООР, Б1ЕЕ, 1ЕКЮК) 1МТЕОЕК ОЮОР, 31ЕЕ, 1ЕККОК МР1 ОКООР.Б1ЕЕ возвращает число процессов в группе. Таким образом, если Егопр = МР1 ОЮОР ЕМРТУ, то функция возвратит вйхе = О.
(С другой стороны, запрос с Егопр = МР1 ОКООР М01Л, ошибочен). МР1 ОКООР КАМЕ(Егопр, гапК) 1М Егопр иня группы ООТ гапК ранг вызвавшего процесса в группе дЗ. Операции над группами шс МР1 Сгоцр гапК(МР1 Огоцр Егоцр, Тпс «гапК) МР1 СКОСР КАМК(СКОСР, КАМЕ, 1ЕККОК) 1МТЕСЕК СКОРР, КАМЕ, 1ЕКЮК МР1 СЮСРКАМК возврашает ранг запрашивающего процесса в группе. Если процесс не элемент группы, то возврашается МР1 СМРЕР!МЕР. МР! СКОСР ТКАМБРАТЕ КАМКБ (Егоцр1, и, гапКз1, Егоцр2, гапКз2) !М Егопр1 имя груцпы1 !М и количество номеров в массивах гапКз1 и гапКз2 !М гапКз1 массив нулей или больших величин, обозначавших ранги в группе1 1М ягоцр2 имя группы2 00Т гапКз2 массив отображенных номеров в группе2 1пг МР1 Огоцр Сгапз!аге гацКз(МР1 Сгоцр Егопр1, Апг п, гпг «гапКз1, МР1 Сгоцр Егоцр2, Апс «гапКз2) МР1 СКООР ТКАМБЕАТЕ КАМЕЯ(СКООР1, М, КАМКБ1, СКОСР2, КАМКБ2, 1ЕККОК) 1МТЕСЕК СКООР1, М, КАМКБ1(«), СЮОР2, КАМКБ2(«), 1ЕКЮК МР1 СКООР ТКАМБ!.АТЕКАМКБ отображает ранги набора процессов в Егоцр1 к их рангам в Егоцр2.
После возвращения массив гапКз2 содержит ранги в Егоцр2 для процессов в Егоцр1 с рангами, внесенными в список в гапКз1. Если процесс в Егоцр1, находящийся в гапКз1, не принадлежит Егоир2, то в гапКз2 возвращается МР!ЛМРЕР!МЕР. Эта функция важна для определения маркировки тех же самых процессов в двух различных группах. Например, если известны ранги процессов в группе МР! СОИМ МОК(.Р, можно было знать их ранги в подмножестве этой группы. Пример 3.1. Допустим, Егоцр1 — имя группы (а, Ь,с,б,е,г! и Егопр2 — имя группы (о, е, а, с).
Допустим, гапКз1=(0,5, 0,2). Тогда запрос к МР1 СЮОР ТКАМБ1АТЕ КАМКБ возвратит ранги процессов (а,1,а, с) в Егопр2, а именно гапКз2=(2,?,2,3). (? — обозначает значение МР1 ОМОВ!МЕР). МР1 СКООР СОМРАКЕ(Егопр1, Егоцр2, гезп1с) 1М Егоцр1 первая группа 1М Егоцр2 вторая группа ОСТ генц!с результат 1пс ИР1„сгоцр союраге(мР1 сгоцр егоцр1,мР! сгоцр егопр2, Апс »гезп!к) МР1 СКОСР СОМРАКЕ(СКОСР1, СКООР2, КЕБСЕТ, 1ЕККОК) 1МТЕСЕК СЮОР1, 0ЮСР2, КЕБСЕТ, 1ЕКЮК МР! СКООР СОМРАКЕ воэврашает связь между двумя группами. В результате возвращается МР! 1РЕМТ, если элементы группы и порядок группы точно тот же в обеих группах. Это случается, например, если Егоир1 и Егоир2 имена того же самого объекта. В результате возвращается МР1 Я!М!ЕАК, если элементы группы те же самые, но порядок различен. Иначе в результате возвращается МР1 УМЕОУА1. 3.3.2.
Строители группы и операпии над группами Строители группы используются, чтобы конструировать новые группы из уже существующих при помощи различных операций. Это местные операции, и различные группы могут быть определены на различных процессах; процесс может также определять группу, которая не включает себя. Совместимые определения требуются, когда группы используются о'. Переключатели каналов как аргументы в функциях строителей коммуникаторов. МР1 не обеспечивает механизм, позволяющий строить группу с самого начала, но только из другой, предварительно определенной группы. Основная группа, на которой все другие группы определены, является группой, связанной с начальным переключателем каналов МР1 СОИМ ЫОВЕО (доступна через функцию МР1 СОМИ СКСПУР).
Локальные функции строителей группы полезны, так как некоторые приложения имеют необходимую информацию, распределенную на всех узлах. Таким образом, новые группы могут быть созданы локально без связи. Можно, затем проводить необходимую связь при создании нового коммуникатора, используя зту группу. В п. 3.4.2 описаны функции создания коммуникаторов, которые также создают новые группы. Коммуникаторы являются более общими функциями создания группы, где информация не должна быть локальной к каждому узлу. Группа, если только она создана, может иметь несколько ссылок на нее, т.
е. несколько копий имен. Однако нужно быть осторожным с запросами освобождения группы, используя МР1 СКОУР РКЕЕ, можно оставить свисающие ссылки на группу. МР1 СОММ СКООР(савв, ягоир) 1И соппп имя коммуникатора ОПТ Егоир имя группы, построенной из комиуникатора тпс МР1 Сова игоир(МР1 Соппп савв, МР1 Сгоир «игоир) МР1 СОИМ СКОУР(СОИМ, СВООР, 1ЕККОК) 1ИТЕСЕК СОИМ, СВООР, 1ЕККОК МР1 СОИМ СКОУР возвращает в ягоир имя группы коммуникатора савв.