Параллельное программирование в стандарте MPI. Баканов В.М - 9 стр.

UptoLike

Составители: 

- 9 -
к возникновению тупиковой ситуации (см. ниже), поэтому при этом требует-
ся дополнительная осторожность; при использовании асинхронных операций
тупиковых ситуаций не бывает, однако эти операции требуют более аккурат-
ного использования массивов данных.
При использовании процедурточка-точка программист имеет возмож-
ность выбрать способ взаимодействия процессов и способ взаимодействия
коммуникационного модуля MPI с вызывающим
процессом.
По способу взаимодействия процессов - в случае неодновременного вызо-
ва двумя процессами парных функций приема и передачи могут быть произ-
ведены следующим образом:
Буферизация данных осуществляется на передающей стороне (при этом
функция передачи захватывает временный буфер, копирует в него сооб-
щение и возвращает управление вызвавшему процессу; содержимое бу-
фера передается принимающему процессу в фоновом режиме).
Режим ожидания на стороне принимающего процесса (при этом возмож-
но завершение с выдачей кода ошибки на передающей стороне).
Режим ожидания на передающей стороне (завершение с кодом ошибки
на стороне приема).
Автоматический выбор одного из трех вышеприведенных вариантов
(именно так действуют простейшие блокирующие функции
MPI_Recv
и
MPI_Send
).
По способу взаимодействия MPI-модуля с вызывающим процессом:
Блокирующий режим - управление вызывающему процессу возвращает-
ся только после того, как данные приняты или переданы (или скопирова-
ны во временный буфер).
Неблокирующий режим - управление вызывающему процессу возвраща-
ется немедленно (т.е. процесс блокируется до завершения операции) и
фактическая приемопередача происходит в фоновом режиме. Этот режим
работает сквитированием’ (функции неблокирующего приема имеют
дополнительный параметр типаквитанция’, причем процесс не имеет
права производить какие-либо действия с буфером сообщения, пока кви-
танция не будет
погашена’).
Персистентный режим (эффективен, например, при приемопередаче
внутри цикла, когда создание/закрытие канала вынесены за его границы);
в этом случае в отдельные функции выделены:
cоздание (постоянного) ‘каналадля приема/передачи сообщений,
инициация процесса приема/передачи через канал,
закрытие канала.
Функций коллективных коммуникаций (при которых получателей и/или
отправителей несколько) имеется несколько типов; в правом столбце ниже-
расположенной таблицы схематично показаны процессоры (вычислительные
                                     -9-

к возникновению тупиковой ситуации (см. ниже), поэтому при этом требует-
ся дополнительная осторожность; при использовании асинхронных операций
тупиковых ситуаций не бывает, однако эти операции требуют более аккурат-
ного использования массивов данных.
   При использовании процедур ‘точка-точка’ программист имеет возмож-
ность выбрать способ взаимодействия процессов и способ взаимодействия
коммуникационного модуля MPI с вызывающим процессом.
   По способу взаимодействия процессов - в случае неодновременного вызо-
ва двумя процессами парных функций приема и передачи могут быть произ-
ведены следующим образом:

  •   Буферизация данных осуществляется на передающей стороне (при этом
      функция передачи захватывает временный буфер, копирует в него сооб-
      щение и возвращает управление вызвавшему процессу; содержимое бу-
      фера передается принимающему процессу в фоновом режиме).
  •   Режим ожидания на стороне принимающего процесса (при этом возмож-
      но завершение с выдачей кода ошибки на передающей стороне).
  •   Режим ожидания на передающей стороне (завершение с кодом ошибки
      на стороне приема).
  •   Автоматический выбор одного из трех вышеприведенных вариантов
      (именно так действуют простейшие блокирующие функции MPI_Recv и
      MPI_Send).

  По способу взаимодействия MPI-модуля с вызывающим процессом:

  •   Блокирующий режим - управление вызывающему процессу возвращает-
      ся только после того, как данные приняты или переданы (или скопирова-
      ны во временный буфер).
  •   Неблокирующий режим - управление вызывающему процессу возвраща-
      ется немедленно (т.е. процесс блокируется до завершения операции) и
      фактическая приемопередача происходит в фоновом режиме. Этот режим
      работает с ‘квитированием’ (функции неблокирующего приема имеют
      дополнительный параметр типа ‘квитанция’, причем процесс не имеет
      права производить какие-либо действия с буфером сообщения, пока кви-
      танция не будет ‘погашена’).
  •   Персистентный режим (эффективен, например, при приемопередаче
      внутри цикла, когда создание/закрытие канала вынесены за его границы);
      в этом случае в отдельные функции выделены:
        • cоздание (постоянного) ‘канала’ для приема/передачи сообщений,
        • инициация процесса приема/передачи через канал,
        • закрытие канала.


  Функций коллективных коммуникаций (при которых получателей и/или
отправителей несколько) имеется несколько типов; в правом столбце ниже-
расположенной таблицы схематично показаны процессоры (вычислительные