Page 222 - 6571
P. 222
- векторний спосіб забезпечує створення нового похідного
типу як набору елементів існуючого типу, між елементами якого
є регулярні проміжки по пам’яті. При цьому розмір проміжків за-
дається в числі елементів початкового типу, тоді як у варіанті H-
векторного способу цей розмір вказується у байтах;
- індексний спосіб відрізняється від векторного методу тим,
що проміжки між елементами початкового типу можуть мати не-
регулярний характер (є і H-індексний спосіб, що відрізняється
способом задання проміжків);
- структурний спосіб забезпечує найзагальніший опис похі-
дного типу через явну вказівку карти створюваного типу даних.
Далі перераховані способи конструювання похідних типів
даних будуть розглянуті детальніше.
1. Безперервний спосіб конструювання. При неперервному
способі конструювання похідного типу даних в MPI використо-
вується функція:
int MPI_Type_contiguous(int count, MPI_Data_type oldt
pe, MPI_Datatype *newtype)
де count – кількість елементів початкового типу;
oldtype – початковий тип даних;
newtype – новий тип даних, що визначається.
Як випливає з опису, новий тип newtype створюється як c
unt елементів початкового типу oldtype. Наприклад, якщо по-
чатковий тип даних має карту типу
{(MPI_INT, 0), (MPI_DOUBLE, 8)},
то виклик функції MPI_Type_contiguous з параметрами
MPI_Type_contiguous(2, oldtype, &newtype);
призведе до створення типу даних з картою типу
{(MPI_INT, 0), (MPI_DOUBLE, 8), (MPI_INT, 16), (M
I_DOUBLE, 24)}
У певному плані наявність неперервного способу конструю-
вання є надмірним, оскільки використання аргументу count в
процедурах MPI рівносильно використанню неперервного типу
даних такого ж розміру.
221