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