🗊Презентация Обмен сообщениями в MPI

Нажмите для полного просмотра!
Обмен сообщениями в MPI, слайд №1Обмен сообщениями в MPI, слайд №2Обмен сообщениями в MPI, слайд №3Обмен сообщениями в MPI, слайд №4Обмен сообщениями в MPI, слайд №5Обмен сообщениями в MPI, слайд №6Обмен сообщениями в MPI, слайд №7Обмен сообщениями в MPI, слайд №8Обмен сообщениями в MPI, слайд №9Обмен сообщениями в MPI, слайд №10Обмен сообщениями в MPI, слайд №11Обмен сообщениями в MPI, слайд №12Обмен сообщениями в MPI, слайд №13Обмен сообщениями в MPI, слайд №14Обмен сообщениями в MPI, слайд №15Обмен сообщениями в MPI, слайд №16Обмен сообщениями в MPI, слайд №17Обмен сообщениями в MPI, слайд №18Обмен сообщениями в MPI, слайд №19Обмен сообщениями в MPI, слайд №20Обмен сообщениями в MPI, слайд №21Обмен сообщениями в MPI, слайд №22Обмен сообщениями в MPI, слайд №23Обмен сообщениями в MPI, слайд №24

Содержание

Вы можете ознакомиться и скачать презентацию на тему Обмен сообщениями в MPI. Доклад-сообщение содержит 24 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Обмен сообщениями в MPI
Двухточечный блокирующий обмен сообщениями
Описание слайда:
Обмен сообщениями в MPI Двухточечный блокирующий обмен сообщениями

Слайд 2





Варианты обмена
1) Двухточечный обмен (point – to - point): участвуют два процесса процесс-отправитель (источник) и процесс-получатель (адресат).
2) Коллективный обмен: участвуют все процессы коммуникатора.
Описание слайда:
Варианты обмена 1) Двухточечный обмен (point – to - point): участвуют два процесса процесс-отправитель (источник) и процесс-получатель (адресат). 2) Коллективный обмен: участвуют все процессы коммуникатора.

Слайд 3





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

Слайд 4






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

Слайд 5





Режимы передачи сообщения
В MPI существует четыре режима обмена, различающиеся условия ми инициализации и завершения передачи сообщения.
Каждый из этих режимов передачи сообщения имеется в блокирующей и неблокирующей формах:
Стандартная передача считается выполненной и завершается, как только сообщение отправлено, независимо от того, дошло оно до адресата или нет. Передача сообщения может начаться, даже если еще не начат его прием.
MPI_Send блокирующая стандартная,
MPI_Isend неблокирующая стандартная.
Описание слайда:
Режимы передачи сообщения В MPI существует четыре режима обмена, различающиеся условия ми инициализации и завершения передачи сообщения. Каждый из этих режимов передачи сообщения имеется в блокирующей и неблокирующей формах: Стандартная передача считается выполненной и завершается, как только сообщение отправлено, независимо от того, дошло оно до адресата или нет. Передача сообщения может начаться, даже если еще не начат его прием. MPI_Send блокирующая стандартная, MPI_Isend неблокирующая стандартная.

Слайд 6





Синхронная передача считается выполненной и завершается только тогда, когда будет завершен прием сообщения. Процесс – получатель после приема посылает уведомление процессу – отправителю (адресату), что сообщение получено.
Синхронная передача считается выполненной и завершается только тогда, когда будет завершен прием сообщения. Процесс – получатель после приема посылает уведомление процессу – отправителю (адресату), что сообщение получено.
MPI_Issend неблокирующая синхронная, 
MPI_Ssend блокирующая синхронная.
Буферизованная передача завершается сразу же, сообщение копируется в системный буфер, где и ожидает своей очереди на пересылку. Завершается буферизованная передача независимо от того, выполнен прием сообщения или нет.
MPI_Bsend блокирующая буферизованная,
MPI_Ibsend неблокирующая буферизованная.
Описание слайда:
Синхронная передача считается выполненной и завершается только тогда, когда будет завершен прием сообщения. Процесс – получатель после приема посылает уведомление процессу – отправителю (адресату), что сообщение получено. Синхронная передача считается выполненной и завершается только тогда, когда будет завершен прием сообщения. Процесс – получатель после приема посылает уведомление процессу – отправителю (адресату), что сообщение получено. MPI_Issend неблокирующая синхронная, MPI_Ssend блокирующая синхронная. Буферизованная передача завершается сразу же, сообщение копируется в системный буфер, где и ожидает своей очереди на пересылку. Завершается буферизованная передача независимо от того, выполнен прием сообщения или нет. MPI_Bsend блокирующая буферизованная, MPI_Ibsend неблокирующая буферизованная.

Слайд 7





Передача «по готовности» начинается только в том случае, когда адресат инициировал прием сообщения, а завершается сразу, независимо от того, принято сообщение или нет. Если прием не зарегистрирован, ре-зультат этой операции не определен.
Передача «по готовности» начинается только в том случае, когда адресат инициировал прием сообщения, а завершается сразу, независимо от того, принято сообщение или нет. Если прием не зарегистрирован, ре-зультат этой операции не определен.
MPI_Rsend блокирующая «по готовности», 
MPI_Irsend неблокирующая «по готовности».

Прием сообщения от всех перечисленных выше функций передачи можно осуществить с помощью двух функций:
MPI_Recv блокирующий стандартный;
MPI_Irecv неблокирующий стандартный.

(буква I в имени от immediately – немедленно)
Описание слайда:
Передача «по готовности» начинается только в том случае, когда адресат инициировал прием сообщения, а завершается сразу, независимо от того, принято сообщение или нет. Если прием не зарегистрирован, ре-зультат этой операции не определен. Передача «по готовности» начинается только в том случае, когда адресат инициировал прием сообщения, а завершается сразу, независимо от того, принято сообщение или нет. Если прием не зарегистрирован, ре-зультат этой операции не определен. MPI_Rsend блокирующая «по готовности», MPI_Irsend неблокирующая «по готовности». Прием сообщения от всех перечисленных выше функций передачи можно осуществить с помощью двух функций: MPI_Recv блокирующий стандартный; MPI_Irecv неблокирующий стандартный. (буква I в имени от immediately – немедленно)

Слайд 8





Блокирующая стандартная передача сообщения
int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)

Входные параметры:
buf – начальный адрес буфера передачи
count – количество элементов в буфере передачи
datatype – тип элементов в буфере передачи (тип MPI)
dest – номер (ранг) процесса – получателя
tag – номер (тег) передаваемого сообщения
comm – идентификатор коммуникатора
Выходной параметр:
error – код ошибки
Описание слайда:
Блокирующая стандартная передача сообщения int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) Входные параметры: buf – начальный адрес буфера передачи count – количество элементов в буфере передачи datatype – тип элементов в буфере передачи (тип MPI) dest – номер (ранг) процесса – получателя tag – номер (тег) передаваемого сообщения comm – идентификатор коммуникатора Выходной параметр: error – код ошибки

Слайд 9





Блокирующие функции обмена
Блокирующая синхронная передача сообщения:
int MPI_Ssend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)

Блокирующая передача сообщения «по готовности»:
int MPI_Rsend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)
Передача «по готовности» должна начинаться, если уже зарегистрирован соответствующий прием. Если прием не зарегистрирован, результат выполнения операции не определен.
Описание слайда:
Блокирующие функции обмена Блокирующая синхронная передача сообщения: int MPI_Ssend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) Блокирующая передача сообщения «по готовности»: int MPI_Rsend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) Передача «по готовности» должна начинаться, если уже зарегистрирован соответствующий прием. Если прием не зарегистрирован, результат выполнения операции не определен.

Слайд 10





«Безопасная» структура программы
с использованием обмена «по готовности»
Описание слайда:
«Безопасная» структура программы с использованием обмена «по готовности»

Слайд 11





Буфферизованная блокирующая передача сообщения
int MPI_Bsend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)
Для выполнения буферизованного обмена необходимо заранее создать буфер достаточного размера с помощью вызова функции MPI_Buffer_attach:
int MPI_Buffer_attach(void *buf, int bufsize)
Входной параметр:
bufsize – размер создаваемого буфера
Выходные параметры:
buf – создаваемый буфер
error – код ошибки
Описание слайда:
Буфферизованная блокирующая передача сообщения int MPI_Bsend(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) Для выполнения буферизованного обмена необходимо заранее создать буфер достаточного размера с помощью вызова функции MPI_Buffer_attach: int MPI_Buffer_attach(void *buf, int bufsize) Входной параметр: bufsize – размер создаваемого буфера Выходные параметры: buf – создаваемый буфер error – код ошибки

Слайд 12





Размер буфера должен превосходить размер сообщения на величину MPI_BSEND_OVERHEAD-дополнительное пространство, которое используется функцией MPI_Bsend.
Размер буфера должен превосходить размер сообщения на величину MPI_BSEND_OVERHEAD-дополнительное пространство, которое используется функцией MPI_Bsend.
После завершения работы с буфером его необходимо отключить с помощью вызова функции MPI_Buffer_detach:
int MPI_Buffer_detach(void* buf, int bufsize)
В результате выполнения вызова возвращается адрес buf и размер отключаемого буфера bufsize.

Функции MPI_Send, MPI_Ssend, MPI_Bsend и MPI_Rsend имеют одинаковые параметры.
Описание слайда:
Размер буфера должен превосходить размер сообщения на величину MPI_BSEND_OVERHEAD-дополнительное пространство, которое используется функцией MPI_Bsend. Размер буфера должен превосходить размер сообщения на величину MPI_BSEND_OVERHEAD-дополнительное пространство, которое используется функцией MPI_Bsend. После завершения работы с буфером его необходимо отключить с помощью вызова функции MPI_Buffer_detach: int MPI_Buffer_detach(void* buf, int bufsize) В результате выполнения вызова возвращается адрес buf и размер отключаемого буфера bufsize. Функции MPI_Send, MPI_Ssend, MPI_Bsend и MPI_Rsend имеют одинаковые параметры.

Слайд 13





Блокирующий прием сообщения
int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status)
Входные параметры:
count – количество элементов в буфере приема
datatype – тип элементов в буфере приема
source – номер (ранг) процесса - отправителя
tag – номер (тег) принимаемого сообщения
comm – идентификатор коммуникатора
status – статус (информация о полученном
сообщении)
Выходные параметры:
 buf – начальный адрес буфера приема
 error – код ошибки
Описание слайда:
Блокирующий прием сообщения int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status) Входные параметры: count – количество элементов в буфере приема datatype – тип элементов в буфере приема source – номер (ранг) процесса - отправителя tag – номер (тег) принимаемого сообщения comm – идентификатор коммуникатора status – статус (информация о полученном сообщении) Выходные параметры: buf – начальный адрес буфера приема error – код ошибки

Слайд 14





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

Слайд 15


Обмен сообщениями в MPI, слайд №15
Описание слайда:

Слайд 16





Функция определения размера сообщения:
 Int MPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count)
Входные параметры:
status – статус (информация о полученном сообщении)
datatype – тип данных, в единицах которого требуется
получить размер сообщения
Выходные параметры:
 count – количество полученных элементов
 error – код ошибки
Описание слайда:
Функция определения размера сообщения: Int MPI_Get_count(MPI_Status *status, MPI_Datatype datatype, int *count) Входные параметры: status – статус (информация о полученном сообщении) datatype – тип данных, в единицах которого требуется получить размер сообщения Выходные параметры: count – количество полученных элементов error – код ошибки

Слайд 17





Блокирующая проверка доставки сообщения
int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status)
Входные параметры:
source – номер (ранг) процесса - отправителя
tag – номер (тег) принимаемого сообщения
comm – идентификатор коммуникатора
Выходные параметры:
 status – статус, который содержит необходимую информацию
error – код ошибки.
Описание слайда:
Блокирующая проверка доставки сообщения int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status) Входные параметры: source – номер (ранг) процесса - отправителя tag – номер (тег) принимаемого сообщения comm – идентификатор коммуникатора Выходные параметры: status – статус, который содержит необходимую информацию error – код ошибки.

Слайд 18





Неблокирующая проверка доставки сообщения
int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status)
Входные параметры:
source – номер (ранг) процесса – отправителя
tag – номер (тег) принимаемого сообщения
comm – идентификатор коммуникатора
Выходные параметры:
 flag = true, если сообщение уже поступило и может быть
принято
status – статус, который содержит необходимую информацию
error – код ошибки.
Описание слайда:
Неблокирующая проверка доставки сообщения int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status) Входные параметры: source – номер (ранг) процесса – отправителя tag – номер (тег) принимаемого сообщения comm – идентификатор коммуникатора Выходные параметры: flag = true, если сообщение уже поступило и может быть принято status – статус, который содержит необходимую информацию error – код ошибки.

Слайд 19





Функция совмещенного приема – передачи сообщения с блокировкой:
Данная функция объединяет посылку и прием сообщений. Буферы передачи и приема должны быть различны, типы пересылаемых и принимаемых данных могут быть различны. Прием и передача используют один и тот же коммуникатор.

int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm,MPI_Status *status)
Описание слайда:
Функция совмещенного приема – передачи сообщения с блокировкой: Данная функция объединяет посылку и прием сообщений. Буферы передачи и приема должны быть различны, типы пересылаемых и принимаемых данных могут быть различны. Прием и передача используют один и тот же коммуникатор. int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm,MPI_Status *status)

Слайд 20





Входные параметры:
Входные параметры:
sendbuf – начальный адрес буфера передачи
sendcount – количество элементов в буфере передачи
sendtype – тип элементов в буфере передачи
dest – номер (ранг) процесса – получателя
sendtag – номер (тег) передаваемого сообщения
recvcount – количество элементов в буфере приема
recvtype – тип элементов в буфере приема
source – номер (ранг) процесса - отправителя
 recvtag – номер (тег) принимаемого сообщения
 comm – идентификатор коммуникатора
Выходные параметры:
 recvbuf – начальный адрес буфера приема
status – статус (информация о полученном сообщении)
 error – код ошибки.
Описание слайда:
Входные параметры: Входные параметры: sendbuf – начальный адрес буфера передачи sendcount – количество элементов в буфере передачи sendtype – тип элементов в буфере передачи dest – номер (ранг) процесса – получателя sendtag – номер (тег) передаваемого сообщения recvcount – количество элементов в буфере приема recvtype – тип элементов в буфере приема source – номер (ранг) процесса - отправителя recvtag – номер (тег) принимаемого сообщения comm – идентификатор коммуникатора Выходные параметры: recvbuf – начальный адрес буфера приема status – статус (информация о полученном сообщении) error – код ошибки.

Слайд 21





Функция замещающего приема – передачи сообщения:
int MPI_Sendrecv_replace(void *buf, int count,
MPI_Datatype datatype, int dest, int sendtag, int source, int recvtag, MPI_Comm comm, MPI_Status *status)
Описание слайда:
Функция замещающего приема – передачи сообщения: int MPI_Sendrecv_replace(void *buf, int count, MPI_Datatype datatype, int dest, int sendtag, int source, int recvtag, MPI_Comm comm, MPI_Status *status)

Слайд 22





Входные параметры:
Входные параметры:
count – количество передаваемых и принимаемых элементов
datatype – тип данных
dest – номер (ранг) процесса - получателя
sendtag – номер (тег) передаваемого сообщения
source – номер (ранг) процесса - отправителя
recvtag – номер (тег) принимаемого сообщения
comm – идентификатор коммуникатора
Выходные параметры:
status – статус (информация о полученном сообщении)
error – код ошибки
buf – (входной и выходной) начальный адрес буфера приема и передачи
Описание слайда:
Входные параметры: Входные параметры: count – количество передаваемых и принимаемых элементов datatype – тип данных dest – номер (ранг) процесса - получателя sendtag – номер (тег) передаваемого сообщения source – номер (ранг) процесса - отправителя recvtag – номер (тег) принимаемого сообщения comm – идентификатор коммуникатора Выходные параметры: status – статус (информация о полученном сообщении) error – код ошибки buf – (входной и выходной) начальный адрес буфера приема и передачи

Слайд 23





Вопросы для обсуждения
Какие группы функций обмена сообщениями существуют в MPI?
Какими атрибутами обладает в MPI каждое посылаемое сообщение?
Как, не принимая сообщение, определить атрибуты сообщения?
Что означает блокирующий обмен сообщениями?
Что означает асинхронный обмен сообщениями?
Можно ли сообщение, отправленное с помощью блокирующей операции посылки, принять неблокирующей операцией приема?
Что гарантирует блокировка при передаче/приеме сообщений?
Описание слайда:
Вопросы для обсуждения Какие группы функций обмена сообщениями существуют в MPI? Какими атрибутами обладает в MPI каждое посылаемое сообщение? Как, не принимая сообщение, определить атрибуты сообщения? Что означает блокирующий обмен сообщениями? Что означает асинхронный обмен сообщениями? Можно ли сообщение, отправленное с помощью блокирующей операции посылки, принять неблокирующей операцией приема? Что гарантирует блокировка при передаче/приеме сообщений?

Слайд 24





Что означает завершение операции для различных режимах передачи сообщения?
Что означает завершение операции для различных режимах передачи сообщения?
Можно ли в качестве тегов при посылке различных сообщений в программе использовать одно и тоже число?
Как можно принять любое сообщение от любого процесса?
 Как принимающий процесс может определить длину полученного сообщения?
 Можно ли при посылке сообщения использовать константы MPI_ANY_TAG, MPI_ANY_SOURCE?
 Может ли размер буфера приема быть меньше буфера посылки?
 Как избежать тупиковые ситуации при использовании функций обмена?
Описание слайда:
Что означает завершение операции для различных режимах передачи сообщения? Что означает завершение операции для различных режимах передачи сообщения? Можно ли в качестве тегов при посылке различных сообщений в программе использовать одно и тоже число? Как можно принять любое сообщение от любого процесса? Как принимающий процесс может определить длину полученного сообщения? Можно ли при посылке сообщения использовать константы MPI_ANY_TAG, MPI_ANY_SOURCE? Может ли размер буфера приема быть меньше буфера посылки? Как избежать тупиковые ситуации при использовании функций обмена?



Похожие презентации
Mypresentation.ru
Загрузить презентацию