В.Д. Корнеев - Параллельное программирование в MPI (1162616), страница 28
Текст из файла (страница 28)
Каждый процесс связывается с каждым процессом (включая текущий): а1!цаСЬег и аП-Со-а1!. Синтаксис и семантика коллективных функций совместимы с ро!пь-ьо-ро!и! операциями, Однако чтобы сохранить функции на приемлемом уровне сложности, они сделаны более ограниченными, чем ро!пь-ьо-ро!п1 операции разными способами. Одно ограничение — то, что в отличие от ро!пь-ьо-ро!п1 операций количество посланных данных должно быть точно согласовано с количеством данных, указанных приемником. 101 6.1.
Введение и краткий обзор Данные Процессы есаыег аШа й1 Рис. 6.1. Иллюстрация коллективных передающих функций для группы из шести процессов. В каждой клетке представлены локальные данные в одном процессе. Например, в Ьгоае1сааФ передает данные Ав только первый процесс, а другие процессы принимают зти данные б. Коллективные взаимодействия 102 Главное упрошение — то, что коллективные функции имеют только блокированные версии. Коллективные функции не используют аргумент тега. Таким образом, внутри каждой )пСга-йгопр области связи коллективные запросы строго согласованы согласно порядку выполнения. Заключительное упрощение коллективных функций касается способов обмена данными, Коллективные функции имеют только один способ обмена данными, аналогичный стандартному режиму ро)пс-со-ро)пс операций.
Семантика следующая. Коллективная функция (на данном процессе) может возвращаться, как только ее участие во всех связях произошло, Как обычно, завершение указывает, что вызываюший оператор теперь свободен к доступу и изменению передаваемого буфера. Это не указывает, что другие процессы закончили нлн даже запустили соответствуюшую операцию. Синхронизация (Ъаг(ег), конечно, является исключением из этого утверждения. 6.2. Некоторые замечания Коллективная операция выполняется при наличии всех процессов в групповом вызове оператора связи с соответствуюшими аргументами.
Допускается определяемый пользователеи тип данных (е)асасурев), который должен быть согласован между передающей и получаю. щей функцией, как определено в гл. 5. Один из ключевых аргументов — йпсгасоввцпйсасог, который определяет группу участвующих в обмене процессов и обеспечивает область связи для операдий. В запросах, где определен процесс корня, некоторые аргументы определены как "имеющие значение только для корня" и игнорируются для всех участников обмена. Типы условий для коллективных операций более строги, чем соответствующие условия между передаюшим и принимающим процессами в ро)пс-со-ро)пс операциях. А именно, для коллективных операций количество посланных данных должно быть точно согласовано с количеством данных, указанных приемником.
Различные отображения типа (расположение в памяти, см. и. 5.2) между передающим и принимающим процессами все еше допускается. Коллективные операции связи могут использовать те же самые коммуникаторы, что н ройпС-Со-ройпС операции; МР1 гарантирует, что сообщения, сгенерированные от имени коллективных операций связи, не будут перепутаны с сообщениями, сгенерированными ройпС-Со-ройпС операциями. Волее детальное обсуждение правильного использования коллективных операторов дано в и. 6.13. 6.3, Аргументы коммуникатора Ключевая концепция коллективных функций — это групповое участие процессов в операциях обмена данными. Операторы не имеют идентификатора группы как явный аргумент.
Взамен имеется аргумент переключателя каналов. В этой главе коммуникатор можно полагать как идентификатор группы, связанный с областью действия коллективных операций. 1псегсоввцпзсасог, т. е. переключатель каналов, связывающий две группы, не допускается как аргумент коллективной функции. 6.4.
Синхронизация ИР1 ВАВВ1ЕВ(савв) 1И сонцл коммуникатор йцс ИР1 Ваггйег(ИРХ Савв савв) ИР1 ВАВВ1ЕВ(СОИМ, 1ЕВВОЕ) 1ИТЕСЕЯ СОММ, 1ЕВВОВ б,Л. Трамсоячиоинып обмен данными 103 МР1 ВАКК?ЕК блокирует вызывающий оператор пока все элементы группы не вызвали его.
В любом процессе запрос возвращается только после того, как все элементы группы пошли в запрос. В.б. Транслицнонный обмен данными МР1 ВСАЯТ(Ьпттег, соппс, 1МООТ Ьитгег 1М соппт, 1М басасуре ?М гоос 1М сова ?пС МР1 Всавс(чоЫо Ьпттег, ?пс соилС, МР1 ОасаСуре басапуре, ?пс гооС, МР1 Совв сова) МР1 ВСАЯТ(ВВРРЕК, СООМТ, ОАТАТУРЕ, КООТ, СОИМ, ?ЕККОК) <Суре> ВОЗЗРЕВ(о) ?МТЕОЕК СООМТ, ОАТАТУРЕ, КООТ, СОММ, 1ЕККОК МР1 ВСАЯТ передает сообщение нз процесса с рангом гоос ко всем процессам группы.
Аргументы корня и на всех других процессах должны иметь идентичные значения, н соппп должна представлять ту же самую 1лсга-ропр область связи. После возвращения содержимое буфера Ьиттег из корня копируется ко всем процессам в буфер Ьпттег. Общий производный тип данных допускается для баСаСуре. Аргумент басаСуре в любом процессе должен быть равен аргументу басасуре в корне.
Это подразумевает, что количество посланных данных должно быть равно полученному количеству, попарно между паиным процессом и корнем. МР1 ВСАЯТ и все другие коллективные операторы выполняют это ограничение. Различные отображения типа между передающим и принимающим процессами все еше допускаются, $.5.1.
Пример использования Них ВСДЗТ Пример 6.1, Передается 100 элементов из процесса О ко всем процессам группы. ИР? Совв соппп; ?пс агтаус1001; (пс гоос=0; 4Р? Всавп(аггау, 100, МР1 ?МТ, гоос, сова); МР? не поддерживает групповую функцию, где МР1 ВСАЯТ, выполненный корнем, может >ыть согласован с принимающими функциями ро)пС-$о-ро1пС в остающихся процессах. 3 коллективном запросе к МР1 ВСАЯТ должны участвовать все процессы, объединенные юммуникатором соппп.
).б. Сбор данных 1Р? ОАТНЕК(велбЬцг, еепбсоипс, вепбсуре, гесчЬпу, гесчсоцпс, гесчсуре, гооС, соппп) апрес передаваемого буфера количество передаваемых элементов тип передаваемых элементов апрес буфера приема количество принимаемых элементов в каином процессе тнп принимаемых данных :М непбЬи1 :М вепбсоппг, :М вепбсуре ?ОТ гесчЬпХ :М гесчсоипс :М гесчсуре басасуре, гоос, соппп) адрес буфера количество элементов в буфере тип панных ранг корневого процесса коммуникатор 6.
Коллективе име вэав иодеяскьвая 104 1М гоос 1М сошш ранг принимаюшего процесса коммуникатор гпс МР1 Оасйег(чоьбв зепбЬи1, гпс зеле)соипс, ИР1 Оасасуре вепбсуре, чоьбв гесчЬий, ьпс гесчсоипс, ИР1 ОаСасуре гесчсуре, гпс гоос, ИР1 Сошш сошш) ИР1 ОАТНЕВ(ЯЕМОВОР, ЯЕМОСООМТ, ЯЕМОТУРЕ, ВЕСЧВОР, ВЕСЧСООМТ,ВЕСЧТУРЕ, ВООТ, СОИМ, 1ЕВВОВ) <суре> ЯЕМОВОР(*), ВЕСЧВОР(*) 1МТЕОЕВ ЯЕМОСООМТ, ЯЕМРТУРЕ, ВЕСЧСООМТ, ВЕСЧТУРЕ, ЮОТ, СОМИ, 1ЕВЮВ В.6.1.
Примеры, использующие Мвт 0АТНЕВ Пример 6.2. Прием корнем 100 элементов от каждого процесса группы (рис. 6.2). 1Р1 Сошш сошш, ьпс Евьзе, зепбаггаус1003, ьпс гоос, *гЬиХ, 4Р1 Сошш згве(сошш, айззле), гЬиг = (гпс в)ша11ос(Езьхев100вззкеог(гпс)), 4Р1 ОасЬег(зепбаггау, 100, ИР1 1МТ, гЬи1, 100, МР1 1МТ, гооС, сошш), Пример 6.3. Аналогичен предыдущему примеру, но здесь только корневой процесс рас- ьределяет память для буфера приема. ФР1 Сошш сошш, ~пС Еззхе, зеле)аггау(1003, Каждый процесс (включая процесс корня) посылает содержимое его буфера к процессу корня.
Процесс корня получает сообщения н хранит их в порядке рангов посылающих процессов. Результат выглядит так, как будто каждый из и процессов в группе (включая процесс корня) выполнил запрос к МР1 ЯЕМО(вепйЬиг,зеписоипс,зепйсуре,гоос, ) и корень выполнил п запросов к МР1ВЕСЧ(гесчЬит + ь * гесчсоипс в ехсепс(гесчсуре), гесчсоипс, гесчсуре,з, ), где ехсепс(гесчсуре) — диапазон типа, полученный от запроса ИР1 ТУРЕ ЕХТЕМТ(). Альтернативное описание выглядит так, как будто п сообщений, посланных процессами в группе, конкатенируют в порядке рангов и результирующее сообщение получено корнем, как будто запросом к ИР1ВЕСЧ(гесчЬиу, гесчсоипсвп, гесчсуре, ). Приемный буфер игнорируется для всех процессов, не равных корню. Общий производный тип данных допускается для зеле)суре и гесчсуре.
Аргументы зепдсоипс и зепйсурв в процессе з должны быть равны аргументам гесчсоипс и гесчсуре в корне. Это означает, что количество посланных данных должно быть равно сумме полученных данных, попарно между каждым процессом н корнем. Различные отображения типа между передаюшим и принимаюшим процессами все еше допускаются. Все аргументы в функции значимы на процессе корня, в то время как на других процессах значимы только аргументы зеп4Ьит, зепйсоипС, зепбиуре, гооС и сова.
Аргумент гоос должен иметь идентичные значения на всех процессах, и сошш должна представлять гу же самую )пьга-Егоир область связи. Спецификация количества и типов не должна быть написанной больше, чем один раз. Ганой запрос ошибочен. Заметьте, что аргумент гесчсоипс в корне указывает число элементов, которые полунает корень от каждого процесса, а не общее число элементов, которые он получает всего. б.б.
Сбор даиимх 10б пс гоос, егЬпХ, шугани, !Р1 Соппп гапк(сова, йшугапк), 1(аугапк == гоос) ( ИР1 Сова якие(сова, йнвтше), гЬцХ = (тпс е)ша11ос(ив1кее100евгхео1(тпс)), !Р1 ОасЬег(вепбаггау, 100, ИР1„1МТ, гЬпт, 100, МР1 1МТ, гоос, сова), !Р1 Сошш сова, .пт яв1ке, яепбаггау(1001, .пс гоос, егЬц1, !Р1 Оасасуре гсуре, 1Р1 Соппп ятие(сова, йнвтге), 1Р1 Туре соплтбцоця(100, МР1 1МТ, йгсуре), |Р1 Туре соваэ п(йгсуре), .ЬпХ = (1пс *)ва11ос(нзтхее100*зпиео1(1пс)), $Р1 Сасьег(зепбаггау, 100, МР1 1йт, гьц1, 1, гсуре, гоос, сопел), Все процессы Процесс корня Рнс. 6.2. Процесс корня принимает 100 элементов от каждого процесса группы 06.2. Сбор данных (векториый вариант) вепбсоцпс, зепбсуре, гесчЬпт, гесчсоипсв, бгяр1я, гесчсуре, гоос, сова) адрес передаваемого буфера количество перелаваемых элементов тип передаваемых элементов адрес буфера приема целочисленный массив, указывавший количество принимаемых элементов в каином процессе целочисленный массив смешений принятых пакетов данных относительно пруг друга тип принимаемых данных ранг принимавшего продесса коммуникатор (совапп1сасог) 1Р1„0АТНЕНЧ(зепбЬп1, М зепбЬпу зепбсоцпс М яепбсуре ЮТ гесчЬцт М гесчсоппсв М бгяр1в М гесчсуре М гоос сова пп МР1 СагЬегч(чо1бе вепбЬп1, 1пс яепс)соипс„ МР1 Васасуре вепбсуре, чо10* гесчьцх, тпс *гесчсоппсз, 1пс *бзвр1я, ИР1 Оасасуре гесчсуре, 1пс гоос, ИР1 Сова сова) 1ример 6.4.
Аналогичен предыдущему примеру, но используется производный с1асасуре. )аметьте, что тип не может быть полным набором ня1кее100 элементов, так как он шрелелен попарно между корнем и каждым процессом. 106 б. Коввективныв взаимодействия вр1 САТНЕКЧ(ЯЕИОВУГ, ЯЕИОСОУИТ, ЯЕИОТЧРЕ, КЕСЧВОР, КЕСЧСООИТЯ, 01ЯР1Я, КЕСЧТУРЕ, КООТ, СОИМ, 1ЕКНОК) ссуре> ЯЕМОВОГ(«), КЕСЧВОГ(«) 1ИТЕОЕК ЯЕИОСООИТ,ЯЕИОТУРЕ,КЕСЧСООИТЯ(«),01БРЬЯ(«),КЕСЧТУРЕ,КООТ,СОММ,1ЕККОК МР1 САТНЕКЧ расширяет функциональные возможности МР1 ОАТНЕК, позволяя использовать изменяющийся соипсз данных из каждого пропесса, так как гесчсоипсз теперь мас:ив.