АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Прием/передача сообщений без блокировки

Читайте также:
  1. Блокировки валов ЭКГ
  2. В системе автоблокировки применяется линейное реле «Л» типа...
  3. В теме 35 сообщений
  4. В теме 5 сообщений
  5. В теме 88 сообщений
  6. Диалоговое окно команды MsgBox (окно сообщений)
  7. Для повышения надежности и бесперебойной работы однопутной автоблокировки переменного тока применяют
  8. КЛЮЧ «Распознавание неэффективных сообщений»
  9. Количество информации, энтропия, избыточность источника сообщений.
  10. Критерии качества и правила приема дискретных сообщений.
  11. Лицо как мультисигнальная система, одновременно передающая несколько сообщений
  12. ОС РВ QNX. Архитектура и функции ядра. Виды IPC. Связь между процессами посредством сообщений.

int MPI_Isend(void *buf, int count, MPI_Datatype datatype, int dest, int msgtag, MPI_Comm comm, MPI_Request *request)

  • buf - адрес начала буфера посылки сообщения
  • count - число передаваемых элементов в сообщении
  • datatype - тип передаваемых элементов
  • dest - номер процесса-получателя
  • msgtag - идентификатор сообщения
  • comm - идентификатор группы
  • OUT request - идентификатор асинхронной передачи

Передача сообщения, аналогичная MPI_Send, однако возврат из подпрограммы происходит сразу после инициализации процесса передачи без ожидания обработки всего сообщения, находящегося в буфере buf. Это означает, что нельзя повторно использовать данный буфер для других целей без получения дополнительной информации о завершении данной посылки. Окончание процесса передачи (т.е. того момента, когда можно переиспользовать буфер buf без опасения испортить передаваемое сообщение) можно определить с помощью параметра request и процедур MPI_Wait и MPI_Test.
Сообщение, отправленное любой из процедур MPI_Send и MPI_Isend, может быть принято любой из процедур MPI_Recv и MPI_Irecv.

int MPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source, int msgtag, MPI_Comm comm, MPI_Request *request)

  • OUT buf - адрес начала буфера приема сообщения
  • count - максимальное число элементов в принимаемом сообщении
  • datatype - тип элементов принимаемого сообщения
  • source - номер процесса-отправителя
  • msgtag - идентификатор принимаемого сообщения
  • comm - идентификатор группы
  • OUT request - идентификатор асинхронного приема сообщения

Прием сообщения, аналогичный MPI_Recv, однако возврат из подпрограммы происходит сразу после инициализации процесса приема без ожидания получения сообщения в буфере buf. Окончание процесса приема можно определить с помощью параметра request и процедур MPI_Wait и MPI_Test.

int MPI_Wait(MPI_Request *request, MPI_Status *status)

  • request - идентификатор асинхронного приема или передачи
  • OUT status - параметры сообщения

Ожидание завершения асинхронных процедур MPI_Isend или MPI_Irecv, ассоциированных с идентификатором request. В случае приема, атрибуты и длину полученного сообщения можно определить обычным образом с помощью параметра status.

int MPI_Waitall(int count, MPI_Request *requests, MPI_Status *statuses)

  • count - число идентификаторов
  • requests - массив идентификаторов асинхронного приема или передачи
  • OUT statuses - параметры сообщений

Выполнение процесса блокируется до тех пор, пока все операции обмена, ассоциированные с указанными идентификаторами, не будут завершены. Если во время одной или нескольких операций обмена возникли ошибки, то поле ошибки в элементах массива statuses будет установлено в соответствующее значение.

int MPI_Waitany(int count, MPI_Request *requests, int *index, MPI_Status *status)

  • count - число идентификаторов
  • requests - массив идентификаторов асинхронного приема или передачи
  • OUT index - номер завершенной операции обмена
  • OUT status - параметры сообщений

Выполнение процесса блокируется до тех пор, пока какая-либо операция обмена, ассоциированная с указанными идентификаторами, не будет завершена. Если несколько операций могут быть завершены, то случайным образом выбирается одна из них. Параметр index содержит номер элемента в массиве requests, содержащего идентификатор завершенной операции.

int MPI_Waitsome(int incount, MPI_Request *requests, int *outcount, int *indexes, MPI_Status *statuses)

  • incount - число идентификаторов
  • requests - массив идентификаторов асинхронного приема или передачи
  • OUT outcount - число идентификаторов завершившихся операций обмена
  • OUT indexes - массив номеров завершившихся операции обмена
  • OUT statuses - параметры завершившихся сообщений

Выполнение процесса блокируется до тех пор, пока по крайней мере одна из операций обмена, ассоциированных с указанными идентификаторами, не будет завершена. Параметр outcount содержит число завершенных операций, а первые outcount элементов массива indexes содержат номера элементов массива requests с их идентификаторами. Первые outcount элементов массива statuses содержат параметры завершенных операций.

int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status)

  • request - идентификатор асинхронного приема или передачи
  • OUT flag - признак завершенности операции обмена
  • OUT status - параметры сообщения

Проверка завершенности асинхронных процедур MPI_Isend или MPI_Irecv, ассоциированных с идентификатором request. В параметре flag возвращает значение 1, если соответствующая операция завершена, и значение 0 в противном случае. Если завершена процедура приема, то атрибуты и длину полученного сообщения можно определить обычным образом с помощью параметра status.

int MPI_Testall(int count, MPI_Request *requests, int *flag, MPI_Status *statuses)

  • count - число идентификаторов
  • requests - массив идентификаторов асинхронного приема или передачи
  • OUT flag - признак завершенности операций обмена
  • OUT statuses - параметры сообщений

В параметре flag возвращает значение 1, если все операции, ассоциированные с указанными идентификаторами, завершены (с указанием параметров сообщений в массиве statuses). В противном случае возвращается 0, а элементы массива statuses неопределены.

int MPI_Testany(int count, MPI_Request *requests, int *index, int *flag, MPI_Status *status)

  • count - число идентификаторов
  • requests - массив идентификаторов асинхронного приема или передачи
  • OUT index - номер завершенной операции обмена
  • OUT flag - признак завершенности операции обмена
  • OUT status - параметры сообщения

Если к моменту вызова подпрограммы хотя бы одна из операций обмена завершилась, то в параметре flag возвращается значение 1, index содержит номер соответствующего элемента в массиве requests, а status - параметры сообщения.

int MPI_Testsome(int incount, MPI_Request *requests, int *outcount, int *indexes, MPI_Status *statuses)

  • incount - число идентификаторов
  • requests - массив идентификаторов асинхронного приема или передачи
  • OUT outcount - число идентификаторов завершившихся операций обмена
  • OUT indexes - массив номеров завершившихся операции обмена
  • OUT statuses - параметры завершившихся операций

Данная подпрограмма работает так же, как и MPI_Waitsome, за исключением того, что возврат происходит немедленно. Если ни одна из указанных операций не завершилась, то значение outcount будет равно нулю.

int MPI_Iprobe(int source, int msgtag, MPI_Comm comm, int *flag, MPI_Status *status)

  • source - номер процесса-отправителя или MPI_ANY_SOURCE
  • msgtag - идентификатор ожидаемого сообщения или MPI_ANY_TAG
  • comm - идентификатор группы
  • OUT flag - признак завершенности операции обмена
  • OUT status - параметры обнаруженного сообщения

Получение информации о поступлении и структуре ожидаемого сообщения без блокировки. В параметре flag возвращает значение 1, если сообщение с подходящими атрибутами уже может быть принято (в этом случае ее действие полностью аналогично MPI_Probe), и значение 0, если сообщения с указанными атрибутами еще нет.


1 | 2 | 3 | 4 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)