Page 177 - 4868
P. 177

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

               визначення типів з блоками однакового розміру (ця функція передбачається
               стандартом MPI-2).

                     4. Структурний  спосіб  конструювання.  Як  відзначалося  раніше,
               структурний  спосіб  є  найзагальнішим  методом  конструювання  похідного
               типу  даних  при  явному  завданні  відповідної  карти  типу.  Використання
               такого способу виконується за допомогою функції:

                     int MPI_Type_struct(int count, int blocklens[],
                           MPI_Aint indices[], MPI_Data_type oldtypes[],
                           MPI_Datatype *newtype)

               де
                       count – кількість блоків;
                       blocklens – кількість елементів в кожному блоці;

                       indices – зміщення кожного блоку від початку типу (у байтах);
                       oldtypes – початкові типи даних в кожному блоці окремо;
                       newtype – новий тип даних, що визначається.
                     Як  випливає  з  опису,  структурний  спосіб  додатково  до  індексного
               методу дозволяє вказувати типи елементів для кожного блоку окремо.

                     23.3. Оголошення похідних типів і їх видалення

                     Розглянуті  в  попередньому  пункті  функції  конструювання  дозволяють
               визначити  похідний  тип  даних.  Додатково  перед  використанням  створений
               тип має бути оголошений за допомогою функції:

                     int MPI_Type_commit(MPI_Datatype *type)
               де

                       type – оголошуваний тип даних.
                     При  завершенні  використання  похідний  тип  має  бути  видалений  за
               допомогою функції:
                     int MPI_Type_free(MPI_Datatype *type)

               де
                     type – тип даних, що видаляється.
                     Разом  з  розглянутими  методами  конструювання  похідних  типів  в  MPI
               передбачений і явний спосіб збирання і розбирання повідомлень, що містять
               значення різних типів і розташовуються в різних областях пам’яті.
                     Для  використання  цього  підходу  має  бути  визначений  буфер  пам’яті
               достатнього розміру для збирання повідомлення. Дані, що входять до складу
               повідомлення дані мають бути упаковані у буфер за допомогою функції:

                     int MPI_Pack(void *data, int count, MPI_Datatype type,
                           void *bufint bufsize, int *bufpos, MPI_Comm comm)
               де
                       data – буфер пам’яті з елементами для упаковки;
                       count – кількість елементів у буфері;
   172   173   174   175   176   177   178   179   180