В.Д. Корнеев - Параллельное программирование в MPI (1162616), страница 31
Текст из файла (страница 31)
)-й блок данных посылается из каждого процесса, получается каждым процессом и размещается в 1-м блоке буфера гесчЬий. Пе все эти блоки могут иметь тот же самый размер. Аргументы яепс!соипс и яепдсуре в процессе ) должны быть равны аргументам гесчсоипся(~1 и гесчсуре в любом другом процессе. Результат выглядит так, как будто все процессы выполнили запросы к МР1 ОАТНЕКЧ(яепс(ЬИ, яепс(соипс, яепбсуре, гесчЬи1, гесчсоипся, с!зяр1я, гесчсуре, гоос, сова) для гоос=О, , и-1. Правила для использования МР1 АЬЬСАТНЕКЧ анэлогичны соответствующим правилам для МР1 ОАТНЕКЧ.
б. Аоллективные пооииодебстоия 11б 6.9.1. Все ко всем (векторный вариант) МР1 АЬЬТОАЬЬЧ(зепдЬи1, зепбсоипсз, ябдяр1з, яепбсуре, тесчЬид, тесчсоипся, гбдяр1з, гесчсуре,сопев) 1И яепбЬи1 1И зепбсоипсз адрес перелаваеного буфера массив, солержаший количество перепаваеных элементов каждоиу процессу массив снешений передаваеных пакетов данных относительно друг друга тип передаваеных ланных адрес буфера приена массив, указывавший количество прининаеиых зленентов от процессов массив смешений прининаеиых пакетов ланных относительно друг прута тип принимаеиых данных коммуникатор (сопвшпдсасот) 1И збдзр1з 1И яепбсуре ООТ тесчЬиХ 1И тесчсоипся 1М тбдзр1з 1И тесчсуре 1И сова дпс МР1 А11соа11ч(чодб« зепбЬиХ, дпс «яепбсоипсз, дпс «збдзр1з, МР1„Расасуре яепбсуре, чодб« тесчЬиу, дпс «гесчсоипся, дпс «тбдяр1з, МР1 РапаСуре гесчгуре, ИР1 Соппп сова) МР1 АЬЬТОАЬЬЧ(ЯЕИРВУР, ЯЕИРСОУИТЯ, ЯР1БРЬЯ, ЯЕИРТУРЕ, КЕСЧВУГ, НЕСЧСОЧИТБ, ВР1ЯРЬЯ, КЕСЧТУРЕ, СОИМ, 1ЕВВОК) <суре) ЯЕИОВУР(«), КЕСЧВОР(«) 1ИТЕОЕК БЕИРСОУИТЯ(«), ЯР1ЯРЬЯ(«), ЯЕИРТУРЕ, НЕСЧСОУИТБ(«), КРТЯРЬЯ(«), НЕСЧТЧРЕ, СОММ, 1ЕКВОВ МР1 АЬЬТОАЬЬЧ прибавляет гибкость к МР1 АЬЬТОАЬЬ в том, что адреса данных для посылающего процесса определены в массиве ябдзр1я и адреса размещения данных в получающей стороне определены в массиве гбдяр1з.
)-й блок, посланный из процесса д получен процессом ) и размещен в д-м блоке массива тесчЬит. Эти блоки не все имеют тот же самый размер. Аргументы зепбсоипс()3 и зепбсуре в процессе д должны быть равны аргументам гесчсоипс(д1 и гесчсуре в процессе ). Это подразумевает, что количество посланных дав- МР1 АЬЬТОАЬЬ вЂ” расширение МР1 АЬЬОАТНЕВ для случая, когда каждый процесс посылает различные данные на каждый из приемников. )-й блок, посланный нз процесса д, получен процессом ) и размещен в д-м блоке буфера тесчЬи1.
Аргументы яепбсоипс и яепбсуре в процессе должны быть равны аргументам тесчсоипс и тесчсуре в любом другом процессе. Это подразумевает, что количество посланных данных должно быть равно количеству полученных, попарно между каждой парой процессов, Однако отображения типов могут быть различны. Результат выглядит так, как будто каждый процесс выполнил посылающий к каждому процессу (включая себя) запрос МР1.Бепб(зепбЬиу+д«зепбсоипс«ехсепс(зепбсуре), зепдсоипс, яепбсуре, д, ) и получает из каждого другого процесса запросом к МР1Лесч(тесчЬиХ+д«тесчсоипс«ехсепс(гесчсуре),тесчсоипс,д, ), где д=О, ,п-1. Все аргументы во всех процессах значимы.
Аргумент сотш должен представить ту же самую 1пьга-игоир область связи на всех процессах. Определение МР1 АЬЬТОАЬЬ дает максимальную гибкость, которую можно достигнуть, определяя при каждом процессе и независимых прямых связей с двумя исключениями: все сообщения используют тот же самый басасуре и рассеяны из последовательного хранения или накапливаются к нему. б.10. Глобальные редуцированные 1объединенныв) операции 117 вых должно быть равно количеству полученных, попарно между каждой парой процессов. Различные отображения типа между датчиком и приемником все еше допускаются.
Результат выглядит так, как будто каждый процесс послал сообщение процессу 1 функцией МР1 БеиЩвепбьпт+жвр1вЫвехсепп(вепбсуре), вепг)сопптвЫ,вепг)суре,й,...) ы получил сообщение из процесса 1 запросом к ИР1 йЕСЧ(гесиЬцг+г)1вр1вЫвехсепс ~геситуре), гесисопптвЫ,гесипуре,1, ), где Анб,...,п-1. Все аргументы на всех процессах значимы. Аргумент соппп должен определить ту же самую )птга-Егоцр область связи на всех процессах.
Определение ИР1 Аь1.ТОАЬЮ дает максимальную гибкость, которую можно достигнуть, определяя при каждом процессе и независимых прямых связей за исключением того, что все сообшения используют тот же самый басасуре. 6.10. Глобальные редуцированные (объединенные) операции Функции в этом пункте делают глобальные редуцированные операции (типа впи, мах, 1ойгса1 АМ0 и т.д.) у всех элементов группы.
Операция редуцирования может быть или одна из предопределенного списка операций, или операция, определяемая пользователем. Глобальные функции редукции имеют несколько вариантов: редукция, возврашаюгцая Результат в одном узле, и общая редукция, возврашаюшая этот результат во всех узлах и делающая операцию просмотра.
Кроме того, геапсе-всатсег — операция объединяюшая функциональные возможности редукции и операции разброса. В порядке улучшения выполнения функции могут передавать массив значений; один запрос будет делать последовательность поэлементных редукций (сокрашений) на массивах значений. Рис. 6.10 дает иллюстрированное представление этих операций.
Ванные гедисе вИгвдисе гебигв-всамег Рис. 6.10. функции, иллюстрируемые для группы из трех процессов. Каждая рамка представляет элементы данных в одном процессе. Таким образом, первоначально каждый процесс имеет три элемента, после редуцирования процесс корня имеет трн суммы 6, Коллективные ввоимодепствия 6.10.1. Редукция МР1 ВЕООСЕ(вепс(Ьцг, 1М вепс(ЬцХ 00Т гесчЬц1 1М соцпс 1М басасуре 1М ор 1М гоос 1М сопев гесчЬцу, соцпс, с(асасуре, ор, гоос, совв) адрес передаваемого буфера апрес буфера ириеиа количество передаваемых элементов тии церелаваеиых элементов операция редукции ранг корневого процесса коммуникатор (соввцпасасог) апс ИР1 Вебпсе(чоай» веис)Ьцг, чоас1» гесчЬиХ, апс социс, ИР1 Оасасуре с(асасуре, ИР1 Ор ор, апс гоос, ИР1 Совв савв) МР1 ВЕООСЕ(ЯЕМОВОР, ВЕСЧВОГ, СООМТ, ОАТАТУРЕ, ОР, ВООТ, СОИМ,1ЕВВОВ) <Суре> ЯЕМОВОР(»), ВЕСЧВОР(») 1МТЕОЕВ СООМТ, ОАТАТУРЕ, ОР, ВОСТ, СОММ, 1ЕВВОВ МР1 ВЕООСЕ объелиняет элементы, находящиеся в передаваемом буфере каждого процесса в группе, используя операцию ор, и возвращает объединенное значение в буфере приема в процессе с рангом гоос.
Передаваемый буфер определен индексами вепбЬцХ, соцпс и с(асасуре; буфер приема определен аргументами гесчЬцХ, соппс и с)асасуре; оба имеют то же самое число элементов, с тем же самым типом. Аргументы ор н гоос должны иметь идентичные значения на всех процессах, аргументы басасуре должны быть согласованы, и совв должна представлять ту же самую 1пьга-ягопр область связи. Таким образом, все процессы обеспечивают передаваемые (входные) буферы н буферы приема (вывода) той же самой длины, с элементами того же самого типа. Каждый процесс может обеспечивать один элемент или последовательность элементов, когда объединяющая операция выполнена позлементно на каждом элементе последовательности.
Например, если выполняется операция МР1 МАХ и посылаюшийся буфер содержит два элемента, которые являются числами с плавающей запятой (соипс=2 н дасасурекМР1 ГЬОАТ), тогда гесчЬцХ(0)и глобальному вах(вепоЬцт(О) ) и гесчЬпХ(1)= глобальному вах(вепс(Ьпт(1)), В и. 6.10.2 дан список предопределенных операций, обеспеченных МР1. Этот пункт также перечисляет позволяемый тип данных дасасурее для каждой операции.
Кроме того, пользователи могут определять их собственные операции, чтобы оперировать на отдельном с(асасурев или основном, или производном. Это далее описано в п. 6.12. Операция ор всегда принимается ассоциативной. Все предопределенные операции также коммутативны. Пользователи могут определять операции, которые будут ассоциативными, но не коммутативными. Канонический порядок вычисления редукции определен рангами процессов в группе.
Однако выполнение может пользоваться преимушеством ассоциативности, или ассоциативность н коммутативность могут изменять порядок вычисления. Это может изменять результат редукции для операций, которые не строго ассоциативны и коммутативны, типа дополнения плавающей запятой. Строго рекомендуется, чтобы МР1 ВЕООСЕ была выполнена так, чтобы тот же самый результат был получен всякий раз, когда функция применяется на тех же самых аргументах, появляющихся в том же самом порядке. Аргумент с)аСаСуре в ИР1 ВЕ00СЕ должен быть совместим с ор. Прелопрелеленные операторы работают только с типами МР[, внесенными в список в и.
6.10.2 и 6.10.3. Определяемые пользователем операторы могут оперировать на общем, выводном басасурее. В этом случае каждый аргумент, к которому применяется операции, — это один элемент, описанный таким с)асасуре, который может содержать несколько основных значений, что далее объяснено в п.