Page 178 - 4868
P. 178

Ошибка! Стиль не определен.                                                              176

                       type – тип даних для елементів, що упаковуються;
                       buf – буфер пам’яті для упаковки;

                       bufsize – розмір буфера у байтах;
                       bufpos – позиція для початку запису у буфер (у байтах від початку
               буфера);
                       comm – комунікатор для упакованого повідомлення.
                     Функція MPI_Pack упаковує count елементів з буфера data у буфер
               упаковки buf, починаючи з позиції bufpos.
                     Початкове  значення  змінної  bufpos  має  бути  сформоване  до  початку
               упаковки  і  далі  встановлюється  функцією  MPI_Pack.  Виклик  функції
               MPI_Pack здійснюється послідовно для упаковки усіх необхідних даних. Так,
               в  раніше  розглянутому  прикладі  набору  змінних  a,  b  і  n  для  їх  упаковки
               необхідно виконати:

                     bufpos = 0;
                     MPI_Pack(&a, 1, MPI_DOUBLE,buf, buflen, &bufpos, comm);
                     MPI_Pack(&b, 1, MPI_DOUBLE,buf, buflen,&bufpos, comm);
                     MPI_Pack(&n, 1, MPI_INT,buf, buflen,&bufpos, comm);

                     Для  визначення  необхідного  розміру  буфера  для  упаковки  може  бути
               застосована функція:

                     int MPI_Pack_size(int count, MPI_Datatype type,
                           MPI_Comm comm, int *size)
               де
                       count – кількість елементів у буфері;

                       type – тип даних для елементів, що упаковуються;
                       comm – комунікатор для упакованого повідомлення;
                       size – рассчитаный розмір буфера.
                     Після упаковки усіх необхідних даних підготовлений буфер може бути
               використаний у функціях передачі даних з вказівкою типу MPI_PACKED.
                     Після  отримання  сполучення  з  типом  MPI_PACKED  дані  можуть  бути
               розпаковані за допомогою функції:

                     int MPI_Unpack(void *buf, int bufsize, int *bufpos,
                           void *data, int count, MPI_Datatype type,
                           MPI_Comm comm)

               де
                       buf – буфер пам’яті з упакованими даними;
                       bufsize – розмір буфера у байтах;
                       bufpos  –  позиція  початку  даних  у  буфері  (у  байтах  від  початку
               буфера);
                       data – буфер пам’яті для даних, що розпаковуються;
                       count – кількість елементів у буфері;

                       type – тип даних, що розпаковуються;
                       comm – комунікатор для упакованого повідомлення.
   173   174   175   176   177   178   179   180