Page 223 - 6571
P. 223

2. Векторний спосіб конструювання. При векторному способі
            конструювання похідного типу даних в MPI застосовуються фун-
            кції

                  int MPI_Type_vector(int count, int blocklen, int stri
            e,
                          MPI_Data_type oldtype, MPI_Datatype *newtype)

            та

                  int MPI_Type_hvector(int count, int blocklen,
                        MPI_Aint stride, MPI_Data_type oldtype,
                        MPI_Datatype *newtype)

            де   count – кількість блоків;
                  blocklen – розмір кожного блоку;

                  stride – кількість елементів, розташованих між двома сусі-
            дніми блоками;

                  oldtype – початковий тип даних;
                  newtype – новий тип даних, що визначається.
                  Відмінність способу конструювання, що визначається функ-
            цією MPI_Type_hvector, полягає лише в тому, що параметр st-

            ride для визначення інтервалу між блоками задається у байтах, а
            не в елементах початкового типу даних.

                  Як випливає з опису, при векторному способі новий похідний
            тип  створюється  як  набір  блоків  з  елементів  початкового  типу,
            при  цьому  між  блоками  можуть  бути  регулярні  проміжки  по
            пам’яті. Наведемо декілька прикладів використання цього спосо-

            бу конструювання типів:
                  -  конструювання типу для виділення половини  (тільки пар-
                     них або тільки непарних) рядків матриці розміром NxN:

                  MPI_Type_vector(n/2, n, 2*n, &StripRowType, &ElemType)

                  -  конструювання типу для виділення стовпця матриці розмі-

                     ром NxN:
                  MPI_Type_vector(n, 1, n, &ColumnType, &ElemType)


                  -  конструювання типу для виділення головної діагоналі мат-
                     риці розміром NxN:

                  MPI_Type_vector(n, 1, n+1, &DiagonalType, &ElemType).

                  З  урахуванням  характеру  прикладів,  що  наводяться,  можна
            згадати наявну в MPI можливість створення похідних типів для

                                                        222
   218   219   220   221   222   223   224   225   226   227   228