В.Д. Корнеев - Параллельное программирование в MPI (1162616), страница 9
Текст из файла (страница 9)
Следующие три функции делают стандартные операции. Это теоретико-множественные операции, так что порядок операндов является важным. МР1 СКООР ОИ10И(игоир1, ягоир2, пеыбгоир) 1М игоир1 первая группа 1И ягоир2 вторая группа ОУТ пеиигоир сумма групп 1пп МР1 6гоир ип1оп(МР1 Сгоир Егоир1, МР1 Сгоир Егоир2, МР1 Сгоир «иенигоир) МР1 СЮОР СИ10И(СКОУР1, СКОУР2, ИЕИСВООР, 1ЕКВОК) 1ИТЕСЕК СВООР1, СКОУР2, ИЕИСКООР, 1ЕВВОК МР1 СКОПР 1ИТЕВЯЕСТ10И(Егоир1, ягоир2, пеыягоир) 1И игоир1 первая группа 1И Егоир2 вторая группа ОПТ пеыягоир пересечение групп зис МР1 Сгоир 1псегвесс1опСМРХ 6гоир ягоир1, МР1 Сгоир игоир2, МР1 Сгоир «пенигоир) МР1 СКООР 1ИТЕКБЕСТ10И(СВООР1, СВОУР2, ИЕЧСКОУР, 1ЕККОК) 1ИТЕСЕК СКОСР1, СЮОР2, ИЕИСВООР, 1ЕКЮК МР1 СКООР 01РРЕВЕИСЕ(игоир1, ягоир2, пеыягоир) 1М Егоир1 первая группа Я.Э.
Операции иад группами 1М Егоир2 СОТ пеыЕгоир вторая группа разность групп 1лс ИР1 0гоир е(Шегепсе(ИР1 Отоир Егаир1, ИР1 0гоир Егоир2, ИР1 Огоир *пенбгоир) МР1 ОЮОР 01РРЕКЕМСЕ(ОЮОР1, 0ЮОР2, МЕМСКООР, 1ЕКЮК) 1МТЕОЕК 0КООР1, 0ЮОР2, МЕЫОКООР, 1ЕККОК Операции определены следующим образом: Сумма — все элементы первой группы (Егаир1) объединяются с элементами второй группы (Етоир2), не входящими в первую группу н образуют новую группу. Пересечение — все элементы первой группы, которые имеются и во второй группе, образуют новую группу с порядком, как в первой группе.
Разность — все элементы первой группы, которые не имеются во второй группе, образуют новую группу с порядком, как в первой группе. Заметьте, что в этих операциях порядок процессов в результирующей группе определен прежде всего в соответствии с порядком в первой группе (если возможно) и затем, в случае необходимости, в соответствии с порядком во второй группе. Ни сумма, ни пересечение не коммутативны, но обе ассоциативны. Новая группа может быть пустой, т.
е. равняться ИР1 ОЮОР ЕИРТУ. Пример 3.2. Допустим, Егаир1и(а, Ь, с,й) и Егаир2и(е),а,е1. Тогда Егаир! () Етоир2 = (а, Ь, с, е), е) (сумма); Егоир1 Г) Егоир2 = (а, е() (пересечение); Егоир! ) Егаир2 = (Ь, с) (разность). ИР1 0КООР 1МС1(Егоир, и, гапКв, пеибгоир) 1М Етоир имя группы 1М и количество элементов в массиве рангов (и размер новой группы пенбгоир) 1М гапКз ранги процессов в группе Егаир, преобразованных в новую группу пеибгоир ОУТ пеыбгоир имя новой группы, произведенной из предыдущей, в порядке, определенном в гапКв 1пс ИР1 Огоир 1пс1(ХР1 0таир Егоир, гпс и, гпс игапйв,МР1 Огоир ипеыбгаир) ИР1 ОКОВ 1МС1(0КООР, М, КАМЕЯ, МЕМОЮОР, 1ЕККОК) 1МТЕОЕК 0КООР, М, КАМКЯ(и), МЕИОКООР, 1ЕКЮК Функция ИР1 0КООР 1МСЬ создает группу пенбгаир, которая состоит из и процессов в группе Егоир с рангами гапК(01, .,тапК(п-11; процесс с рангом 1 в пеыЕгаир есть процесс с рангом гапКЫ в Етаир.
Каждый из п элементов в гапйв должен быть рангом в группе Егоир, и все элементы должны быть различны, иначе запрос ошибочен. Если и = О, то пеыЕгоир есть ИР1 0КООР ЕИРТУ. Эта функция может, например, использоваться, чтобы переупорядочить элементы группы. Пример З.З. Допустим Егаир — имя группы (а,Ь,с,е1,е,т) и допустим гапКв=(3,1,2). Тогда имя группы (й, Ь, с) будет возвращено в пеыбгаир. Допустим, что пеыЕгаир была создана запросом к МР1 0ЮУР 1МСЕ(Егоир,п,гапКв, иеыЕтаир).
Тогда запрос к ИР1 0КООР ТКАМЯЬАТЕКАМКЯ(Етоир, и, гапКз, пенбгоир, пеыгапКз) Л. Переключатели каналов возвратит пенгапКз[т]кз, з=О,,п-1 (в С) или пенгапКз(т+1)=т, з=О,,и-1 (в Рог- 1гап'е). МР1 ОВООР ЕХСЕ(Егоир, и, гаиКз, пещгопр) 1М Егопр имя группы 1М и количество элементов в массиве гапКе 1М гаиКз массив рангов в Егоир, не преобразованных в пеыйгоир ООТ пенбгоир имя новой группы, преобразованной иэ предыдушей, с сохранением порядка, определенном в группе Егоцр тпс МР1 Огоцр ехс1(МР1 Огопр Егоцр, тпс и, тип «гапКз,МР1 Огопр «пенЕгоцр) МР1 ОВООР ЕХСЬ(ОВООР, М, ВАМКБ, МЕМОВООР, 1ЕВВОВ) 1МТЕОЕВ ОВООР, М, ВАМКБ(«), МЕИОВООР, 1ЕВЮВ Функция МР1 ОВООР ЕХСЬ создает группу процессов пеыбгоцр, которая получена удалением из группы нгоцр процессов с рангами гапКз[0], , гапКз[п-1] на С или гапКз[1], гапКз[п] в Гогггаи'е.
Порядок процессов в группе иенйгопр идентичен порядку в группе нгоцр. Каждый из и элементов гапКз должен быть рангом в группе Егоцр, и все элементы должны быть различны; иначе запрос ошибочен. Если п=О, то пеыигоцр идентична Егоцр. Пример 3.4. Допустим Егоир — имя группы (а,Ь,с,б,е,т) и допустим гаиКз=(3,1,2). Тогда имя группы (а, е, г) возвращается в пенйгоцр. Предположим, есть запросы МР1 ОВООР 1МСЫЕгоцр,п,гапКз, иеннгопрг) и МР1 ОВОУРЕХС1. (Егоир,п,гапКз,пенйгоире). Запрос МР1 ОВООР ОМ10М(пенйгоирг, пеыбгоцре,пеыигоцр) возвратил бы в пенЕгопр группу с теми же самыми элементами, как группа Егоцр, но, возможно, в различном порядке.
Запрос МР1 ОЮОР 1МТЕВЯЕСТ1ОМ(Егопрг, нгопре,пеыйгоцр) возвратил бы МР1 ОВООР ЕМРТУ. МР1 ОВОУР ВАМОЕ 1МСЬ(Егопр, и, гаибез, пенбгоир) 1М Егоцр имя группы 1М и количество триплетов в массиве рангов 1М гапбез массив целочисленных триппетов, вида (первый ранг, последний ранг, шаг), индипируюших ранги в группе процессов ягопр, присоединенных к группе пеийгопр ООТ иеннгопр имя новой группы полученной иэ препыдушей группы, с элементами упорядоченными как определено в гапЕез тпс МР1 Огопр гапбе тпс1(МР1 Оговор Егопр, тпс п, гпс гапбез[][3], МР1 Оговор «иеыйгоцр) МР1 ОВООР ВАМОЕ 1МСЕ(ОВООР, М, ВАМОЕЯ, МЕИОВООР, 1ЕВЮВ) 1МТЕОЕВ СВООР, М, ВАМОЕЯ(3,«), МЕНОВООР, 1ЕВВОВ Каждый триплет в гапбез определяет последовательность рангов для процессов, которые будут включены в ~озданную группу.
Созданная группа содержит процессы, указанные первым триплетом, к ним присоединяются процессы, указанные вторым триплетом и т.д. Пример 3 б. Допустим Егоир — имя группы (а,Ь,с,б,е,Х,Е,Ь, г,)) и допускает гапбез= ((6,7, 1), (1,6,2), (0,9,$)). Первый триплет (6,7,1) определяет процессы (Е,Ь) с рангами (6,7); второй триплет (1,6,2) определяет процессы (Ь,б,т) с рангами (1,3,8) и третий триплет (О, 9,4) определяет процессы (а, е, т) с рангами (0,4,8).
Функция создает новую группу (Е,Ь,Ь,6,1,а,е, з). З.а. Операции мад группагеи 33 В общем, если гапбез состоит из тРиплетов (пеРвыйз,послелний1,шагз), (первый„, послелний„, шаг„) тогла пемцгопр состоит процессов в ягоир с рангами: первыйы первыйз+ шаты ..., первый1 + [(послепнийз — первыйз)~шагз] е шагм ..., первый„, первый„+ шаг„, ..., первый„+ [(послелнийи — первыйп) ~шаги] * шаг„ Каждый вычисленный ранг должен быть рангом в нгопр, и все вычисленные ранги должны быть различны, иначе запрос ошибочен.
Заметьте, что запрос может иметь первый;> последний, и шагк может быть отрицательный, но не может быть нулевой. Функциональные вазможности этой функции определены эквивалентными расширению массива диапазонов к массиву включенных рангов и передачи результирующего массива рангов и других аргументов в МР1 СВОУР 1МСЬ.
Запрос к МР1 СВОУР 1МСЬ эквивалентен запросу к МР1 СВОСР ВАМСЕ 1МСЬ, где каждый ранг 1 в гапке, заменен триплетом (1, 1, 1) в аргументе гапяез. ИР1 СВОУР ВАМСЕ ЕХСЬ(ягоир, и, гапяез, пемягоир) 1М Егопр имя группы 1М и количество элементов массиве рангов 1М гапйез массив целочисленных триплетов, вила (первый ранг, последний ранг, шаг), инлицируюших ранги в группе процессов ягопр, исключенных иэ выходной группы пемйгопр ОСТ пемйгопр имя новой группы полученной иэ прельшушей группы, с элементами, упорядоченными как определено в цгопр 1пс МР1 0гоир гапке ехс1(МР1 Сгоцр ягоцр, 1пс и, 1пс гапйезЦ [3~, МР1 Сгопр епемйгопр) ИР1 СВОУР ВАМСЕ ЕХСЬ(СВОУР, М, ВАМСЕЯ, МЕИСВОУР, 1ЕВВОВ) 1МТЕСЕВ СВОУР, М, ВАМСЕЯ(3,е), МЕМСВОУР, 1ЕВВОВ Каждый триплет в диапазонах определяет последовательность рангов для процессов, которые будут исключены из созданной группы.
Созданная группа содержит остающиеся процессы, упорядоченные как в цгопр. Пример 3.6. Лопустим, как в примере 3.5, Егопр — имя группы [а, Ь, с, д, е,1,ц, А, 1,3) и допустим галиев=((6,7,1), (1,Б,2), (0,9,4)). Запрос создает новую группу [с,)), состоящую из всех процессов в старой группе, исключенной списком триплетов. Каждый вычисленный ранг должен быть рангом в Егопр, и все вычисленные ранги должны быть различны, иначе запрос ошибочен.
Функциональные возможности этой функции определены эквивалентными расширению массива диапазонов к массиву исключенных рангов и передачи результирующего массива рангов и других аргументов к МР1 СЕСАР ЕХСЬ. Запрос к ИР1 СВОУР ЕХСЬ эквивалентен запросу к МР1 СВООР ВАМСЕ ЕХСЬ, гле каждый ранг 1 в гапке, заменен триплетом (з, 1,1) в аргументе галиев. З.З.З. Освобождение (уничтожение) группы МР1 СВОСР ШВЕЕ(кгопр) 1МОУТ цгопр имя группы 1пс МР1 Сгопр йгее(МР1 Сгопр айгопр) МР1 СВООР ШВЕЕ(СВОУР, 1ЕВВОВ) 1МТЕСЕВ СВОУР, 1ЕВВОВ 34 3. Переключатели каналов Эта операция регистрирует объект группы для освобождения.
Имя группы после этого указывает на МР1 ОВООР МОЬЬ. Любая действующая операция, использующая эту группу, завершится обычно. 3.4. Операции над коммуникаторами Этот пункт описывает манипуляции с коммуникаторами в МР1. Операции, которые осуществляют доступ к коммуникаторам, — локальные и их выполнение не требует межпроцессорной связи. Операции, которые создают коммуникаторы, — коллективны и требуют межпроцессорной связи. 3.4.1. Вспомогательные информационные функции Все следующие операции локальные. МР1 СОММ Б1ЕЕ(совв, ейхе) 1М совв нмя коммуникатора 00Т айке количество процессов в подмножестве соппп йпс МР1 Соппп вйне(МР1„Сошт совв, 1пс ввйне) МР1 СОММ Б1ЕЕ(СОММ, Б1ЕЕ, 1ЕВКОК) 1МТЕОЕВ СОИМ, Б12Е, 1ЕВЮВ МР1 СОММ Б1ЕЕ возвращает размер подмножества, связанного с соппп.
Эта функция указывает число процессов, объединенных в 1псгасоввпп1сасог сова. Для МР1 СОММ ИОВЫ она указывает общее число процессов, доступных во время инициализации. (Для этой версии МР1 зто также общее число процессов, доступных в течение вычисления.) Эта функция эквивалентна функции МР1 ОВООР Б1ЕЕ (см. выше). МР1 СОИМ ВАМК(сопел, гап)с) 1М сова имя коммуникатора ООТ гапк ранг вызвавшего процесса в сова 1пс МР1 Соппп гапк(МР1 Совв соппп, 1пс *галя) МР1 соим Влмк(сомм, клик, 1еВВОВ) 1МТЕОЕВ СОИМ, ВАМК, 1ЕКЮВ МР1 СОММ ВАМК указывает ранг процесса, который вызывает эту функцию; ранг в диапазоне от О,...,вйяе-1, где эйве значение, возвращаемое функцией МР1 СОММ Б1ЕЕ.