Основу MPI составляют операции передачи сообщений. Среди предусмотренных в составе MPI функций различаются парные (point-to-point) операции между двумя процессами и коллективные (collective) коммуникационные действия для одновременного взаимодействия нескольких процессов.
Для выполнения парных операций могут использоваться разные режимы передачи, среди которых синхронный, блокирующий и др.
Понятие коммуникаторов
Процессы параллельной программы объединяются в группы.
Коммуникатор (по[Корнеев] переключатель каналов) определяется, как служебный объект с рядом атрибутов и правилами, которые управляют его созданием, использованием, разрушением. Данный объект служит для определения области связи, которая может использоваться для точечных или коллективных взаимодействий между процессорами.
По типу различают следующие коммуникаторы:
- Интракоммуникаторы( intracommunicator ) - используются для связи процессов внутри группы заданной топологии, которая указывает положение процессов в группе
- Интеркоммуникторы (intercommunicator) - используются для взаимодействия между двумя непересекающимися группами. При этом установленные атрибуты интеркоммуникатора состоят из двух групп. Никакая тополгия не связанна с интеркоммуникатором.
Парные операции передачи данных, как правило, выполняются для процессов, принадлежащих одному и тому же коммуникатору.
|
|
Коллективные операции применяются одновременно для всех процессов коммуникатора.
Таким образом, указание используемого коммуникатора является обязательным для операций передачи данных в MPI.
В ходе вычислений могут создаваться новые и удаляться существующие группы процессов и коммуникаторы. Один и тот же процесс может принадлежать разным группам и коммуникаторам. Все имеющиеся в параллельной программе процессы входят в состав создаваемого по умолчанию коммуникатора с идентификатором MPI_COMM_WORLD.
Типы данных
При выполнении операций передачи сообщений для указания передаваемых или получаемых данных в функциях MPI необходимо указывать тип пересылаемых данных. MPI содержит большой набор базовых типов данных, во многом совпадающих с типами данных в алгоритмических языках C и Fortran. Кроме того, в MPI имеются возможности для создания новых производных типов данных для более точного и краткого описания содержимого пересылаемых сообщений.