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
   200   201   202   203   204   205   206   207   208   209   210