В.Д. Корнеев - Параллельное программирование в MPI (1162616), страница 15
Текст из файла (страница 15)
функции запроса топологии Функция может получать тип топологии, связанной с коммуникатором. МР1 ТОРО ТЕЯТ отвечает на этот вопрос. Это локальный вызов, МР1 ТОРО ТЕЯТ(савв, зсаспз) 1М со пап коннуникатор ООТ зсасцз тип топологии, связанной с коннуникаторон савв Апс МР1 Торо сенс(МР1 Соппп савв, 1пс хзсаспз) мрт торо ткБт(сомм, БТАТОБ, 1кВВОВ) 1МТЕОЕК СОММ, БТАТОБ, 1ЕВВОК Функция МР1 ТОРО ТЕБТ возвращает тип топологии, которая связана с коммуникатором.
Состояние значения зсатцз одно нз следующих: В гл. 9 приведены примеры, демонстрирующие применение функций задания топологий. МР1 6ВАРН МР1 САКТ МР1ЛМОЕГ1МЕО переупорядоченные ранги пропессов; возврашается МР1 ОМОЕГ1МЕО, если не образуют граф топология графа декартова топология нет топологии 5. РоЫ-Фо-Ро1пй взаимодействия 5.1.
Введение и краткий обзор Основной механизм связи между процессами в МР1 — передача данных между парой взаимодействующих процессов: сапой — посылающей, другой — получающей. Эта связь называется "ро1пС-~о-ро1п1". Почти все конструкции из МР1 построены вокруг ро1пх'-хоро1п1 операций и таким образом эта глава является основной. МР1 обеспечивает набор посылающих и получающих функций, которые допускают пересылку типов (дасаСуре) данных, связанных (ассоциированных) тегом (тай). Тип содержания сообщения необходим для гетерогенной поддержки.
Информация о типе нужна для того, чтобы могли быть сделаны правильные преобразования представления данных в разных архитектурах ЭВМ, поскольку данные могут быть посланы от процессов, находящихся в одной архитектуре ЭВМ, к процессам, находящимся в другой архитектуре ЭВМ. Тег допускает избирательность сообщений в приемном конце: можно получать по особому тегу или это может быть групповой символ этого кванта данных, позволяющий прием сообщений с любым тегом. На исходном процессе сообщения также обеспечивается избирательность сообщения. Существует много вариантов ро1п~-$о-ро1п~ операций. Эти варианты имеют разную семантику исполнения, связанную с разными протоколами взаимодействий. Варианты операций необходимы для оптимизации взаимодействий в каждом конкретном случае при аписании параллельного алгоритма задачи.
Если хотите выполнять протокол, минимизирующий копирование и буферизацию данных в системе, наиболее естественной семантикой могла бы быть "гепдекиоив" версия, где завершение посылающего подразумевает, что получающий был начат (по крайней мере). С другой стороны, протокол, который пытается блокировать процессы на минимальное количество времени, обязательно должен делать большее количество буферизации и копирования данных в системе и будет иметь "ЪиКег1пйи семантику я т.д.
Имеются следующие базовые типы передающих и принимающих ро1п1-Фо-ро1пС операций: блокированные и иеблокироваииые. Каждая передающая операция из этих типов имеет дополнительные полтины: буферизированиый, синхронный и по состоянию вогповиосши. Принимающих операций только две: блокированная и неблокированная. Каждая принимающая функция из этих типов совместима со всеми передающими функциями и наоборот. Краткое содержание семантики исполнения этих функций следующее. Блокированный способ взаимодействий.
Блокированная передача данных. Блокированная передающая функция асинхронна, т. е. возвращает управление после передачи параметров в систему. Но будет заблокирована при доступе (по записи или чтению) к посылаемому массиву данных до тех пор пока данные сообщения не будут безопасно сохранены в промежуточном буфере системы и посылающийся буфер пе будет снова свободен к доступу (чтению, записи данных). Относительно соответствующей принимающей функции (в принимающей стороне) в данном случае нет никаких предположений, и завершение посылающей функции не обязательно подразумевает, что соответствующая получающая функция стартовала. И нет никакого предположения в прикладной программе относительно того, буферизуются ли посылаемые данные или нет. (Посылаемые данные буферизуются в системном буфере программными средствами системы.) Семантика завершения функции не локальная (т.
е. зависима от выполнения других процессов). Имеется несколько версий блокированных передающих функций; стандартная (МР1 ЯЕМ0), буферизированная (МР1 ВЯЕМР), синхронная (МР1.5ЕЕМ0) и по состоянию готовности (МР1 йБЕМй). Блокированный прием данных МР1 МЕСЧ.
Функция возвращает управление только после того, как буфер приема данных получит соответствующее сообщение. б. Ротбсо-Рот1 взаимодействия 56 Неблокированцый способ взаимодействий, Неблокированные операции всегда имеют две части: функции передачи параметров системе, которые инициируют запрошенное действие и функции "проверки на завершение", которые допускают, чтобы прикладная программа обнаружила, закончилось ли запрошенное действие. Небяонированная передача данных. Неблокированная функция указывает, что система может начинать копировать данные вне посылаюшегося буфера. После передачи параметров в систему функция возвращает управление.
После этого передающий процесс не должен иметь доступ (по записи, а в данном случае и по чтению) к посылающемуся буферу, т. е. система не гарантирует в этом случае сохранность посылаемых данных. Для проверки завершения рассматриваемой операции, используются функции МР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? Синхронный способ взаимодействий, Синхронная блокированная передача данных (МР1 ЯЯЕИО) и Синхронная неблокированная передача данных (МР1 1ЯЯЕМО). Синхронный способ взаимодействий имеет семантику реализации "геп4ехчоиз". Синхронная передача может быть начата только после того, как соответствующий приемник готов к приему посылаемых данных, т.
е. запустилась соответствующая принимающая функция. Таким образом, завершение синхронных передающих операций не только указывает, что посылаюшийся буфер может теперь использоваться, но также и то, что приемник достиг некоторого пункта в его выполнении, а именно, что он запустил выполнение соответствующей получающей функции.
Синхронный способ обеспечивает семантику синхронной связи: связь не заканчивается с обоих коннов перед обоюдным сближением процессов в связи. Синхронный способ передачи имеет не локальную семантику завершения. Зля не- блокированных операций функции МР1 НА1Т и МР1 ТЕЯТ проверяют, завершилась операция пли нет. Способ взаимодействий "состояние готовности". кСоетояние еотовности" блокированная передача (МР1.ЗЯЕМО) и "Состояние еотовности" неблокированная передача (МР1 1НЯЕМО).