В.Д. Корнеев - Параллельное программирование в MPI (1162616), страница 27
Текст из файла (страница 27)
ВОР?*) ?МТЕСЕК СООМТ, ОАТАТУРЕ, ОЕЯТ, ТАС, СОММ, КЕЦОЕЯТ, 1ЕВВОК МР? 1ЯЯЕМ0 — неблокированный, синхронный способ передачи данных. Если соответтвующей принимающей функцией является неблокированная принимающая функция ИР? ?КЕСЧ, то передающая функция ИР1 1ЯЯЕМО синхронизуется с переданными в систему параметрами соответствующей неблокированной принимающей функции. А функции Мам в Тент со стороны передающей функции только проверяют наличие этих выставленных зараметров со стороны неблокированной принимающей функции. соцпъ, оасасуре, оезс, саб, сошш, гес)цепс) адрес передаваемого буфера количество передаваемых элементов тип передаваеиых элементов ранг приемника тег сообшения коммуникатор (сошшцп?салаг) заголовок запроса '?лс ИР1 ?гзелс)(ио?ов Ьцт, ?пс соцпс, МР1 Оасасуре «?алагуре, ?пс е?езс„ 1пт саЕ, мР?„сошш сошш, мр1 кес)цепс вгес?цезс) 1Р? ?ВЯЕМ0(ВОР, СООМТ, ОАТАТ1'РЕ, 0ЕБТ, ТАС, СОИМ, ВЕЦОЕЯТ, ?ЕККОВ) стуре> ВОР(*) ГМТЕОЕВ СООМТ, ОАТАТУРЕ, 0ЕЯТ, ТАС, СОИМ, КЕЦОЕБТ, 1ЕВКОК МР1 1КБЕМ0 — неблокированный, по готовности способ передачи данных.
$.12.3, о стойчивые запросы ?Р? ВЯЕМ0 ?М?Т(Ьцу, ~М Ьц1 ~М соцпс 1М с?асасуре ГМ оеес ЧР? ?ББЕМО(Ьцг, 1М ЬцХ 1М соцпс 1М с1асасуре ?М йезФ ?М саб 1М сошш 30Т гее?лезс еР? ?ВБЕМО(Ьпу, ?М Ьц1 ?М соцпс ?М оасасуре ?М с?езс ?М саЕ ?М сошш )ОТ гес)пенс соцпс, паьасуре, пене, иаЕ, сошш, гее?цепс) адрес передаваемого буфера количество передаваемых элементов тип передаваемых элементов ранг приемника 5 12 Способы связи тег сообшения коммуникатор (соввппасасог) заголовок запроса 3 СаЯ 1М совв БТ гес(пенс шС МР1 Ввело апас(чотб» Ьп1, тпс саппС, ИР1 Оасапуре баСапуре, 1пс денс, апс сая, МРХ„Совв совв, ИР1 Веопевс »геопевс) й«1 ВЯЕМО 1М1Т(ВОР, СООМТ, ОАТАТУРЕ, РЕБТ, ТАЯ, СОИМ, ВЕЦОЕБТ,1ЕВЮВ) :суре> ВОР(») :МТЕСЕВ ВЕЦРЕБТ, СОРМТ, РАТАТУРЕ, РЕЕТ, ТАО, СОММ, ВЕЦРЕЯТ, 1ЕВВОВ МР1 ВЯЕМР 1И1Т вЂ” неблокированная, буферизировьнная, устойчивая инициализация ~ередачи данных. шс МР1 Явепб апас(чоаб» Ьц1, апс соппс, ИР1 Расасуре йасасуре,1пс зевс, апС Саб, МР1 Сова совв, МР1 Вес)пенс »тес(пенс) 1Р1 ЯЯЕМР 1М1Т(ВОР, СОУМТ, РАТАТУРЕ, РЕЯТ, ТАС, СОИМ, ВЕЦУЕЯТ,1ЕВЮВ) .'Суре> ВОГ( «) ~МТЕСЕВ СОУМТ, РАТАТУРЕ, РЕЯТ, ТАС, СОИМ, ВЕЦРЕЯТ, 1ЕВЮВ МР1 ЯБЕМР 1М1Т вЂ” неблокированная, синхронная, устойчивая инициализация передачи ~анных.
Со стороны передающего процесса в синхронизации участвует функция ИР1 ЯТАВТ шя МР1 ЯТАТВТАЫ.. .пс МР1 Ввепс« апас(чей» Ьпт', ъпс соппс, МР1 Оасасуре «1асасуре, апс зевс, апс СаЯ, ИР1 Сова савв, МР1 Вес)пенс »гечпевс) ~Р1 ВЯЕМР 1М1Т(ВУГ, СОУМТ, ОАТАТУРЕ, КЛЕЯТ, ТАС, СОММ, ВЕЦУЕЯТ,1ЕВВОВ) :суре> ВРГ(») МТЕСЕВ СОУМТ, РАТАТУРЕ, РЕЯТ, ТАО, СОИМ, ВЕЦУЕБТ, 1ЕВВОВ МР1 ВЯЕИР 1М1Т вЂ” неблокированная, по состоянию готовности, устойчивая инициализа:пя передачи данных. 1Р1 ББЕМО 1М1Т(ЬпТ, ~М Ьпй :М соцпс ~М «(асасуре ~М «)евс Щ Сая Л сопел МТ тес)пенс !Р1 ВЯЕМР 1М1Т(Ьп1, :М Ьп1 :М соппс :М бапасуре 'М бевс .М сап сова МТ гес(пенс соппс, басасуре, бевс, саЕ, совв, геопевс) адрес передаваемого буфера количество передаваемых элементов тип передаваемых элементов ранг приемника тег сообшения коммуникатор (сопапппасасог) заголовок запроса соппс, басасуре, оевс, саЕ, совв, гес)пенс) апрес передаваемого буфера количество передаваемых элементов тип передаваемых элементов ранг приемника тег сообщения коммуникатор (сопцпппасасог) заголовок запроса П.
Ротапо-Ро1пп взаимодействия Пример 5.23. Использование синхронного и по готовности способов обмена данными. (1оас Ьп11(1000, 2); йР1„Ясаспз зсаспз; ЧР1 Сони соппп; йР1 ге~)пенс гес(пенс; ЧР1 Сова гапК(соппп, гапК); Н(гапК == О) ( МР1 1КЕСЧ(ЬпХХ(1,1), 1000, МР1 Р1.0АТ, 1, 1, сони, гей(1)); МР1 1НЕСЧ(Ьп11(1,2), 1000, МР1 Р1.0АТ, 1, 2, соив, тес)(2)); МР1 ЧА1ТА11(2, гес(, зпаппз); п1зе ( 1Р(гапК == 1) ( МР1 Язепд(Ьпгг(1,2), 1000, МР1 РЕОАТ, О, 2, сони, зпагпз(1,1)); МР1 Нзепб(Ьп11(1,1), 1000, МР1 РЬОАТ, О, 1, соппп, зпаппз(1,2)), Первая синхронная передающая функция первого процесса соответствует второй припимающей функции нулевого процесса. Эта передающая операция закончит только после запуска второй принимающей функции нулевого процесса и после того, как завершилась пницнализация первой принимающей функции нулевого процесса.
Следовательно, вторая функция, по состоянию готовности, первого процесса стартует правильно, т.к. соответ.твующая первая принимающая функция нулевого процесса стартовала прежде. э.12.4. Буферное распределение и использование Прикладная программа должна определить буфер в памяти, который нужно использовать пля буферизации сообщений, предаваемых таким способом. Буферизация выполняется передающим процессом. йР1 ВОРРЕН АТТАСН(Ьп11ег, зйхе) 1М Ьпгтег адрес буфера (М зйие разиер буфера в байтах (пс МР1 Вптгег ассасЬ(оо1ов Ьптгег, 1пс зйхе) 1Р1 ВОРРЕВ АТТАСН(ВОРРЕВ, Я12Е, 1ЕНВСВ) стуре> ВОРРЕВ(в) (МТЕОЕН Я12Е, 1ЕВЮВ МР1 ВОРРЕН АТТАСН выделяет буфер в памяти прикладной программы, который нужно пспользовать для буферизации передаваемых сообщений, представленных таким способом.
Голько один буфер может быть присоединен одновременно (за передачу). 1Р1 ВОРРЕВ 0ЕТАСН(Ьпгтег, зйхе) )ОТ ЬпХХег иня буфера )ОТ зйхе разнер буфера в байтах ~па МР1„ВпИ~ег бесасЬ(чо1ов Ьп11ег, 1пъв згве) 1Р1 ВВЕРЕН 0ЕТАСН(ВОРРЕН, Я1ЕЕ, 1ЕКЮВ) гауре> ВОРРЕВ(*) ~МТЕОЕН Я12Е, 1ЕВВСВ б Ы Способы связи 99 МР1ВУРРЕН ВЕТАСН отделяет буфер, в текущее время связанный с МР1. Запрос возврашает адрес и размер отделенного буфера. Эта операция блокирована пока все сообщения в текущее время не переданы из буфера. После возвращения этой функции пользователь яожет повторно использовать или освобождать место, занимаемое буфером.
Пример 5.24. Использование, присоединение и отделение буфера. $ое1тпе ВУРРВ1ЕЕ 10000 гпс втхе, сЬаг вЬитт, ЬиХ1 = (сЬаг в)иа11ос(ВВРРВ1ЕЕ), МР1 ВЫ1ег ассасЬ(ЬиХХ, ВВРРЯ1ЕЕ), (в Буфер разиерои в 10000 байт может теперь использоваться функцией МР1 Ввепбв/ МР1 Виттег бесасЬ(ФЬитт, йвтие), (* Размер буфера редуцируется в ноль */ МР1 Виттег аииасЬ(Ьигг, вгие), ы Буфер разиерои в 10000 байт возврашен опять в/ В функции МР1 Витгег ассасЬ используется аргумент указателя на буфер, в 1Р1Вигтег бесасЬ вЂ” аргумент адреса указателя на буфер.
Как используется присоединенный буфер? МР1 система должна вести себя, как будто передаваемые данные сообщения буфернзовались процессом посылки в указанном простран:гве буфера. Она подает сигнал ошибки всякий раз, когда программа исчерпала буфер. Ь12.5. Некоторые комментарии к способам связи (огда должен использоваться каждый способ? В большинстве случаев предпочтительно ипользовать стандартный режим передачи. Пользователи, которые не доверяют буферизации в стандартном режиме, могут испольовать буферизированный способ связи и управлять буферным распределением самостоявльно.
В этом случае ответственность за переполнение буфера лежит на пользователе. Синхронный способ удобен в случаях, где требуется связь с семантикой "гепдезнаие» рандеву). Использование синхронного способа — это подсказка системе, что буферизации ~ужно избежать, Способ передачи по состоянию готовности менее надежен и должен использоваться с сторожностью. 6. Коллективные взаимодействии 6,1.
Введение и краткий обзор Коллективная связь обеспечивает обмен данными среди всех процессов в группе, указанной аргументом 1псгасолцзипзсатог.(Везде далее в этой главе словом группа будет именоваться подмножество процессов, объединенных 1псгасопзкцпьсасог'ом см. гл. 3.) МР! обеспечиваются следующие коллективные функции связи. ° Синхронизация (Ьагг!ег) — синхронизует все процессы группы (п. 6.4). ° Глобальные функции связи, которые иллюстрируются на рис. 6.1. Они включают: — передачу данных (Ьгоабсазь) от одного процесса группы ко всем процессам группы (и. 6,5); — сбор данных (йа1Ьег) от всех процессов группы к одному процессу этой группы (п. 6.6); — разброс данных (есаььег) от одного процесса группы ко всем процессам группы (п. 6.7); — сбор данных в цикле по всем процессам группы; все элементы группы получают результат от всех (п.
6.8). Это показывает а!!ка1Ьег на рис. 6.1; — разброс/сбор (зса$$ег/йаЬЬег) данных от всех элементов ко всем элементам группы (функция названа полным обменом или "все ко всем") (п. 6.9). Это показывает а11$оай на рис. 6.1. ° Глобальные операции редуцирования типа нцв, шах, и1п или определяемые пользователем функции. Они включают: — редуцирование, где результат возвращается всем процессам группы, и вер~ию, где результат возвращается только одному процессу группы (п. 6.10); — объединенное редуцирование и операцию всассег (разброс) (п.
6.10.5), развертку по всем элементам группы (также назван префикс) (и. 6.11). Рис. 6.1 дает иллюстрированное представление функций глобальной связи. Все оня (исключая Ьгоаосазь) имеют два варианта: простой, где все передаваемые данные имеют один и тот же размер, и векторный (чесйог), где каждый набор данных может иметь различный размер. Кроме того, в простом варианте данные, многократно передаваемые или получаемые одним и тем же процессом, являются прилегающими (соприкасающимися) в памяти; векторный вариант допускает выбор различных наборов данных из нескольких несмежных участков памяти.
Некоторые из этих функций, типа Ьгоадсаз1 или йайег, имеют единственный передающий процесс или единственный процесс получения. Такой процесс назван корнем (гоос). Функции глобальной связи в основном трех моделей: 1. Корень посылает данные ко всем процессам (включая корень): Ьгоас1саяФ и зса1Сег. 2. Корень получает данные из всех процессов (включая корень): ка1Ьег. 3.