В.Д. Корнеев - Параллельное программирование в MPI (1162616), страница 26
Текст из файла (страница 26)
Если список содержит активные запросы, то функция возвращается, когда некоторые из активных запросов закончили. Если все запросы были недействительны или бездействующие, то запрос возврагдается немедленно с оцссоппС = МР1ЛМОЕГ1МЕО. Список запросов к МР1 ТЕБТБОМЕ может содержать недействительные илп бездействуюцие запросы. Если список содержит активные запросы и некоторые закончили, то запрос юзврашается и в оцСсоцпС номер законченного запроса.
Если он содержит активные запро:ы и ни один не закончил, то функция возвращает оцссоппС = О. Если список не содержит активных запросов, то функция возвращает оцСсоцпс = МР1ЛМЭЕР1МЕО. Во всех этих случаях недействительные или бездействующие заголовки объектов не изменены запросом. Хример 5.22, Производитель — потребитель. СуребеХ зСгцсС ( сйаг оасаГМАХЯ1ЕЕЗ; йпС оаСазгхе, 1 Ви11ег; б 11 Финкчии эаверидвния связи с нвдепстнвитеявными заголовками обьектиов ВЗ Вцттег Ьптгег0, МР1 Нес(цепс ген[), МР1 Ясасцв всаспв, МР1 Сони гапК(сони, йгалК), МР1 Соив вдхе(соки, квдие), д1(гапК '= вдие-1) ( /» Производитель «/ Ьпддег = (Впддег «)иа11ос(вдиеог(Впддег)), /* Главный цикл */ нЬд1е(1) ( ргодпсе(Ьп11ег->баса, АЬШ1ег->басавдхе), МР1 Яепб(Ьпггег->паса,Ьпттег->басавдге,МР1 СВАН,вдле-1,сац,сони), ~« гапК == вдне-1, потребитель «/ е1ее с Ьпддег = (Вц11ег «)ва11ос(вдхеод(Вцгдег)»(вдхе-1)), гес( = (МР1 НеЧпевс «)иа11ос(вдиео1(МР1 НеЧпевс)«(вдхе-1)), Тот(д = О, д<вдие-1.
д++) гей[д] = МР1 НЕ()КЛЕЯТ НП(.1., /* Главный цикл «/ иЬд1е(1) (. МР1 Надсапу(вдие-1, гей, йд, йвсаспв), д1(д == МР1 ПНРЕР1НЕР) ( аког()=0, 1 < вдие-1, )++) МР1 1гесч(Ьцтгег[)1 баСа, МАХЯ12Е, МР1 СНАМ, ), СаЕ, сопи, й- [))), е1ве ( МР1„бес сопле(йвсаспв, МР1 СНАМ, АЬп11ег[д1 басавдхе), сопвпве(ЪцттегЫ баса, Ьп11егЫ басавдхе), ) Принятие недействительных или бездействующих запросов в функциях завершения вязи облегчает использование функций множественного завершения (п. 5.8). Как в примере ~ыше, пользователь не должен удалять каждый запрос из списка, как только он закончил, ю может повторно использовать тот же самый список, пока все запросы в списке не акончили.
Поведение запросов множественного завершения было определено следующим: ° Тевс возвращается с 11а8 = сгпе всякий раз, когда возвратился бы Наде; оба запроса возвращают ту же самую информацию в этом случае. ° Запросы фадс, Надсапу, Надсвоше или Надса11 возвращаются, если все запросы в списках недействительны или бездействующие, таким образом избегая блокировки. ° Информация, возвращенная Тевс, Теесапу, Тевсеоие или Тевса11, вызывает различия между случаем "незаконченнал операция" и случаем "имеются незаконченные операции".
б. Рото1о-Рот1 езаинодейетеия 5.12. Способы связи >.12,1. Блокированные операции соипс, дасасуре, е!евс, сан, сова) адрес перепаваемого буфера количество передаваемых элементов тип передаваемых элементов ранг приемника тег сообшения комиуникатор (соввипзсасог) 4Р1 ВБЕМО(ЬиХ, !М Ьп1 ГМ соипс !М басасуре [М е!еес !М сад !М сова ~пс ИР1 Ввепе!(иоде!е Ьий, тпс соипс, ИР1 Оасасуре «!асаСуре, тпС «!евС, зпс Сац, ИР1 Соппп соппп) $Р1 ВБЕМР(ВУГ, СОУМТ, РАТАТУРЕ, ОЕБТ, ТАО, СОИМ, 1ЕВВОВ) :суре> ВОР(е) РМТЕОЕВ СООМТ, ОАТАТУРЕ, ОЕБТ, ТАО, СОИМ, 1ЕК ИР1 ВБЕМΠ— блокированный, буферизированный способ передачи данных.
Семантика способов взаимодействий описана во введении этой главы. Здесь кратко повторим способы взаимодействий. Посылающая функция, описанная в п. 5.2.1, использовала етпандартный способ связи, МР1 может буферизировать передаваемые сообщения. В этом злучае передающая функция может закончить прежде, чем вызывается соответствующий получатель. С другой стороны, пространство буфера может быть недоступно. В этом случае передающая функция не будет заканчивать, пока соответствующий получатель не начал получать и данные были перемещены в приемник. Передающая операция в буферизированно.и способе передачи данных может быть завершена прежде, чем соответствующая прннимаюгцая функция выйдет на прием. Этот зпособ посылки имеет локальную семантику завершения: его завершение не зависит от вхождения соответствующего получателя. Пространство буфера обеспечивается прикладной программой (и.
5.12.4), если оно недостаточное, появляется ошибка. Пространство буфера, паполненное в соответствии с сообщением, освобождается, когда сообщение передано по мго назначению или когда буферизированная передающая операция отменена. Передающая операция в сингронном способе передачи данных может быть завершена, .сли соответствующая получающая функция вышла на прием.
Таким образом, завершение =инхронной передачи не только указывает, что посылаюшийся буфер может многократно использоваться, но также и то, что приемник достиг некоторой точки в его выполнении, а именно, что он запустил выполнение соответствующей получающей функции. Синхронный "пособ обеспечивает семантику синхронной связи: связь не заканчивает с обоих концов перед обоим сближением процес~он в связи. Синхронный способ передачи имеет нелокпльную земантику завершения. Передающая операция в способе передачи данных иеотоеность" может быть начата, .сли только соответствующая получающая функция уже была готова к приему данных. Иначе операция ошибочна н ее результат неопределен. Однако она приводит иногда к глучшенному выполнению.
Этот способ имеет ту же самую семантику что и стандартный пособ посылки. Для трех приведенных выше способов связи имеются три дополнительных передающих рункции. Способ связи обозначен одной буквой пред именем операции:  — для буферизирозанного, Б — для синхронного и  — для способа "готовность". Имеется только две операции приема: блокированная и неблокированная, которые соответствует любому способу перепачи.
Все посылающие и получающие операции используют ьит, соппс, е!асасуре, сопгсе, 1евс, саб, сова, всаспе и гее!иенс аргументы таким же образом, как и стандартный способ чередающих и принимающих операций. о.Ж Слосо6ы связи МР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 ВЯЕМР— блохнрованный, по готовности способ передачи данных. 012,2. Неблокированные операции )десь те же самые соглашения наименования функций, что и в блокированных связях: пре. ~иксы В, Я и В используются для буферизированного, синхронного и состоянию готовностя :пособов передачи данных.
Кроме того, префикс 1 (непосредственно перед ранее упомя~утыми префиксами) указывает, что операция неблокирована, Имеется только одна не ~локированная принимающая операция МР1 1ВЕСЧ. Неблокиропанные передающие функции авершаются теми же самыми операциями МатС и Тезс, что н стандартный способ переда!н. соцпС, баСатуре, безс, сая, сошш, геВпезС) алрес перепаваемого буфера количество перепаваемых элементов тип передаваемых эленентов ранг приемника тег сообшения коммуникатор (сошшцптсасог) заголовок запроса пс МР1 1Ьзепс1(потаяв ЬцХ, тпс соцпс, МР1 Расасуре басасуре, тпс безс, тпс сае, МР1 Сопок соппп, МР1 Вес(пенс вгес(цезс) 1Р1 1ВЯЕМР(Ьцт, М Ьцт М соцпс М басасуре М безс М саЕ М сошш ЮТ гес(пенс басасуре, безг„ саЕ, сопел) алрес перепаваемого буфера количество передаваемых элементов тип передаваемых элементов ранг приемника тег сообшения коммуникатор (сошшцптсасог) басасуре, безс, саЕ, сошш) апрес перелаваемого буфера количество передаваемых элементов тип передаваемых элементов ранг приемника тег сообшения коммуникатор (сошшцптсасог) й.
Ротари-Рот1 взаимодействия ЧР? ?ВЯЕМО(ВОР, СООМТ, ОАТАТУРЕ, 0ЕЯТ, ТАС, СОММ, КЕЦОЕЯТ, 1ЕВКОК) стуре> ВОР(*) ?МТЕСЕВ СООМТ, ОАТАТУРЕ, 0ЕБТ, ТАС, СОИМ, ВЕЦОЕЯТ, 1ЕККОК 'чр? ?ВБЕМΠ— неблокированный, буферизированный способ передачи данных. соцпс, оасасуре, оезс, саб, сошш, гес?пенс) адрес передаваемого буфера количество передаваемых элементов тип передаваемых элементов ранг приемника тег сообшения коммуникатор (соишцлгсасог) заголовок запроса ?лс ИР1 ?звене?(ио?с)в Ьцт, тпс соппс, ИР1 Оасасуре с?асасуре, ?пс с?езс, ?пс таб, МР1 Сопи сошш, МР1 Кес?цезс *гее?цепс) ЧР? ?БЯЕМ0(ВОР, СООМТ, ОАТАТУРЕ, 0ЕЯТ, ТАС, СОИМ, КЕЦОЕЯТ, ?ЕВВОВ) ссуре.