Page 225 - 6571
P. 225
// конструювання типу для опису верхньої трикутної мат-
риці
for (i=0, i < n; i++){
blocklens[i] = n-i;
indices[i] = i*n+i;
}
MPI_Type_indexed(n, blocklens, indices, &UTMatrixType,
&ElemType);
Як і раніше, спосіб конструювання, що визначається функці-
єю MPI_Type_hindexed, відрізняється тим, що елементи indi-
ces для визначення інтервалів між блоками задаються у байтах, а
не в елементах початкового типу даних.
Слід зазначити, що існує ще одна додаткова функція MP-
I_Type_create_indexed_block індексного способу конструю-
вання для визначення типів з блоками однакового розміру (ця
функція передбачається стандартом 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 Оголошення похідних типів і їх видалення
Розглянуті в попередньому пункті функції конструювання
дозволяють визначити похідний тип даних. Додатково перед ви-
224