Введение в практику разработки параллельных программ в стандарте MPI. Баканов В.М - 10 стр.

UptoLike

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

- 10 -
По способу взаимодействия MPI-модуля с вызывающим процессом:
Блокирующий режим - управление вызывающему процессу возвращается
только после того, как данные приняты или переданы (или скопированы во
временный буфер).
Неблокирующий режим - управление вызывающему процессу возвращает-
ся немедленно (т.е. процесс блокируется до завершения операции) и фак-
тическая приемопередача происходит в фоновом режиме. Этот режим ра-
ботает сквитированием’ (функции неблокирующего приема имеют
дополнительный параметр типаквитанция’, причем процесс не имеет
права производить какие-либо действия с буфером сообщения, пока
квитанция не
будетпогашена’).
Персистентный режим (эффективен, например, при приемопередаче внут-
ри цикла, когда создание/закрытие канала вынесены за его границы); в
этом случае в отдельные функции выделены:
cоздание (постоянного) ‘каналадля приема/передачи сообщений,
инициация процесса приема/передачи через канал,
закрытие канала.
Функций коллективных коммуникаций (при которых получателей и/или
отправителей несколько) имеется несколько типов; в правом столбце ниже-
расположенной таблицы схематично показаны процессоры (вычислительные
узлы) в виде строк и хранимые в их ОП порции данных в виде столбцов, аб-
бревиатурой БЛД обозначается блок данных (подробнее о применении опи-
санных
функций см. в [1,2] и http://parallel.ru):
1. Тип broadcast: один-всем
Широковещательная передача сооб-
щений - один БЛД одного из процессов
передается всем процессам группы
MPI_Bcast(buffer, count, datatype,
source, comm), где bufferначальный
адрес буфера данных, countчисло
элементов в буфере, datatype - тип
элементов, source - номер передающе-
го процесса, comm - коммуникатор
2. Тип scatter: один-каждому
Раздача БЛД от одного процесса
всем процессам группы
MPI_Scatter(sendbuf, sendcount,
sendtype, recvbuf, recvcount, recvtype,
source, comm), где sendbuf, send-
count, sendtypeадрес начала, число и
тип элементов буфера посылки,
recvbuf, recvcount, recvtypeто же
для б
уф
е
р
а сбо
р
а данных, source но-
     По способу взаимодействия MPI-модуля с вызывающим процессом:

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


  Функций коллективных коммуникаций (при которых получателей и/или
отправителей несколько) имеется несколько типов; в правом столбце ниже-
расположенной таблицы схематично показаны процессоры (вычислительные
узлы) в виде строк и хранимые в их ОП порции данных в виде столбцов, аб-
бревиатурой БЛД обозначается блок данных (подробнее о применении опи-
санных функций см. в [1,2] и http://parallel.ru):

    1. Тип broadcast: один-всем

       Широковещательная передача сооб-
    щений - один БЛД одного из процессов
    передается     всем процессам группы
    MPI_Bcast(buffer, count, datatype,
    source, comm), где buffer – начальный
    адрес буфера данных, count – число
    элементов в буфере, datatype - тип
    элементов, source - номер передающе-
    го процесса, comm - коммуникатор
    2. Тип scatter: один-каждому
       Раздача БЛД от одного процесса
    всем          процессам         группы
    MPI_Scatter(sendbuf,        sendcount,
    sendtype, recvbuf, recvcount, recvtype,
    source, comm), где sendbuf, send-
    count, sendtype – адрес начала, число и
    тип элементов буфера посылки,
    recvbuf, recvcount, recvtype – то же
    для буфера сбора данных, source – но-

                                              - 10 -