ВУЗ:
Составители:
Рубрика:
- 25 -
ресов ветвей (например, при вычислении матриц иногда выгодно использо-
вать картезианскую систему координат, где координаты вычислительной
ветви совпадают с координатами вычисляемой ею подматрицы).
int
MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int msgtag,
MPI_Comm comm, MPI_Status *status);
• buf - адрес начала буфера приема сообщения (возвращаемое значение)
• count - максимальное число элементов в принимаемом сообщении
• datatype - тип элементов принимаемого сообщения
• source - номер процесса-отправителя
• msgtag - идентификатор принимаемого сообщения
• comm - идентификатор группы
• status - параметры принятого сообщения (возвращаемое значение)
Функция
MPI_Recv осуществляет прием сообщения с идентификатором
msgtag от процесса source с блокировкой (блокировка гарантирует, что после
возврата из подпрограммы все элементы сообщения приняты и расположены
в буфере
buf). Число элементов в принимаемом сообщении не должно пре-
восходить значения
count (если число принятых элементов меньше count, то
гарантируется, что в буфере
buf изменятся только элементы, соответствую-
щие элементам принятого сообщения). Если процесс посылает два сообще-
ния другому процессу и оба эти сообщения соответствуют одному и тому же
вызову
MPI_Recv, первым будет принято то сообщение, которое было от-
правлено раньше.
Т.о. с помощью пары функций
MPI_Send/MPI_Recv осуществляется надеж-
ная (но не слишком эффективная) передача данных между процессами. Од-
нако в некоторых случаях (например, когда принимающая сторона ожидает
приема сообщений, но априори не знает длины и типа их) удобно использо-
вать блокирующую функцию
MPI_Probe, позволяющую определить характе-
ристики сообщения до того, как оно будет помещено в приемный пользова-
тельский буфер (гарантируется, что следующая вызванная функция
MPI_Recv
прочитает именно протестированное
MPI_Probe сообщение):
int
MPI_Probe( int source, int msgtag, MPI_Comm comm, MPI_Status *status);
• source - номер процесса-отправителя (или MPI_ANY_SOURCE)
• msgtag - идентификатор ожидаемого сообщения (или MPI_ANY_TAG)
• comm - идентификатор группы
• status - параметры обнаруженного сообщения (возвращаемое значение)
В структуре
status (тип MPI_Status) содержится информация о сообщении –
его идентификатор (поле
MPI_TAG), идентификатор процесса-отправителя
ресов ветвей (например, при вычислении матриц иногда выгодно использо- вать картезианскую систему координат, где координаты вычислительной ветви совпадают с координатами вычисляемой ею подматрицы). int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int msgtag, MPI_Comm comm, MPI_Status *status); • buf - адрес начала буфера приема сообщения (возвращаемое значение) • count - максимальное число элементов в принимаемом сообщении • datatype - тип элементов принимаемого сообщения • source - номер процесса-отправителя • msgtag - идентификатор принимаемого сообщения • comm - идентификатор группы • status - параметры принятого сообщения (возвращаемое значение) Функция MPI_Recv осуществляет прием сообщения с идентификатором msgtag от процесса source с блокировкой (блокировка гарантирует, что после возврата из подпрограммы все элементы сообщения приняты и расположены в буфере buf). Число элементов в принимаемом сообщении не должно пре- восходить значения count (если число принятых элементов меньше count, то гарантируется, что в буфере buf изменятся только элементы, соответствую- щие элементам принятого сообщения). Если процесс посылает два сообще- ния другому процессу и оба эти сообщения соответствуют одному и тому же вызову MPI_Recv, первым будет принято то сообщение, которое было от- правлено раньше. Т.о. с помощью пары функций MPI_Send/MPI_Recv осуществляется надеж- ная (но не слишком эффективная) передача данных между процессами. Од- нако в некоторых случаях (например, когда принимающая сторона ожидает приема сообщений, но априори не знает длины и типа их) удобно использо- вать блокирующую функцию MPI_Probe, позволяющую определить характе- ристики сообщения до того, как оно будет помещено в приемный пользова- тельский буфер (гарантируется, что следующая вызванная функция MPI_Recv прочитает именно протестированное MPI_Probe сообщение): int MPI_Probe( int source, int msgtag, MPI_Comm comm, MPI_Status *status); • source - номер процесса-отправителя (или MPI_ANY_SOURCE) • msgtag - идентификатор ожидаемого сообщения (или MPI_ANY_TAG) • comm - идентификатор группы • status - параметры обнаруженного сообщения (возвращаемое значение) В структуре status (тип MPI_Status) содержится информация о сообщении – его идентификатор (поле MPI_TAG), идентификатор процесса-отправителя - 25 -
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »