Page 205 - 6571
P. 205
- буфер пам’яті має бути достатнім для прийому повідом-
лення. При нестачі пам’яті частина повідомлення буде втрачена і
в коді завершення функції буде зафіксована помилка перепов-
нення;
- з іншого боку, повідомлення, що приймається, може бути і
коротше, ніж розмір приймального буфера, у такому разі змінять-
ся тільки ділянки буфера, зачеплені прийнятим повідомленням;
- типи елементів повідомлення, що приймається, повинні
співпадати;
- при необхідності прийому повідомлення від будь-якого
процесу-відправника для параметра source може бути вказане
значення MPI_ANY_SOURCE (на відміну від функції передачі
MPI_Send, яка посилає повідомлення строго визначеному адреса-
ту);
- при необхідності прийому повідомлення з будь-яким тегом
для параметра tag може бути вказане значення MPI_ANY_TAG
(знову-таки, при використанні функції MPI_Send має бути вказа-
не конкретне значення тегу);
- на відміну від параметрів «процес-одержувач» і «тег», па-
раметра «комунікатор» не має значення, що означає «будь-якого
комунікатора»;
- параметр status дозволяє визначити ряд характеристик
прийнятого повідомлення:
1) status.MPI_SOURCE – ранг процесу-відправника при-
йнятого повідомлення;
2) status.MPI_TAG – тег прийнятого повідомлення.
Приведені значення MPI_ANY_SOURCE і MPI_ANY_TAG іноді
називають джокерами.
Значення змінної status дозволяє визначити кількість еле-
ментів даних в прийнятому повідомленні за допомогою функції:
int MPI_Get_count(MPI_Status *status, MPI_Datatype ty
e,
int *count)
де status – статус операції MPI_Recv;
type – тип прийнятих даних;
count – кількість елементів даних в повідомленні.
204