Санкт-Петербургский государственный университет
Опубликован: 11.10.2012 | Доступ: свободный | Студентов: 955 / 173 | Длительность: 05:14:00
Лекция 3:

Двухточечные обмены

< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Аннотация: Лекция посвящена двухточечным обменам в MPI. Рассматриваются различные варианты блокирующих и неблокирующих обменов, приведено описание интерфейсов соответствующих процедур библиотеки, приводятся примеры.

Презентацию к данной лекции Вы можете скачать здесь.

Двухточечные обмены

Двухточечный (point-to-point, p2p) обмен

В двухточечном обмене участвуют только два процесса, процесс-отправитель и процесс-получатель  (источник сообщения и адресат). Двухточечные обмены используются для организации локальных и неструктурированных коммуникаций.


Имеется несколько разновидностей двухточечного обмена

  • блокирующие прием/передача, которые приостанавливают выполнение процесса на время приема или передачи сообщения;
  • неблокирующие прием/передача, при которых выполнение процесса продолжается в фоновом режиме, а программа в нужный момент может запросить подтверждение завершения приема сообщения;
  • синхронный обмен, который сопровождается уведомлением об окончании приема сообщения;
  • асинхронный обмен, который таким уведомлением не сопровождается.

Двухточечный обмен возможен только между процессами, принадлежащими одной области взаимодействия (одному коммуникатору).


Правильно организованный двухточечный обмен сообщениями должен исключать возможность блокировки или некорректной работы параллельной MPI-программы.

Примеры ошибок в организации двухточечных обменов:

  • выполняется передача сообщения, но не выполняется его прием;
  • процесс-источник и процесс-получатель одновременно пытаются выполнить блокирующие передачу или прием сообщения.

Правильно


Неправильно


Неправильно


В MPI приняты следующие соглашения об именах подпрограмм двухточечного обмена:

                        
MPI_[I][R, S, B]Send
     

здесь префикс [I] (Immediate) обозначает неблокирующий режим. Один из префиксов [R, S, B] обозначает режим обмена: по готовности, синхронный и буферизованный.

Отсутствие префикса обозначает подпрограмму стандартного обмена.

Имеется 8 разновидностей операции передачи сообщений.

Для подпрограмм приема:

                        
MPI_[I]Recv
     

то есть всего 2 разновидности приема.

Подпрограмма приема любого типа может принять сообщения от любой подпрограммы передачи.

< Лекция 2 || Лекция 3: 123 || Лекция 4 >