Page 221 - 6571
P. 221
тяжності і розміру знову ж таки у величині округлення для вирів-
нювання адрес. Так, в даному прикладі розмір типу дорівнює 28,
а протяжність – 32 (передбачається, що тип int займає чотири
байти).
Для отримання значення протяжності типу в MPI передбаче-
на функція:
int MPI_Type_extent(MPI_Datatype type, MPI_Aint
*extent)
де type – тип даних, протяжність якого визначається;
extent – протяжність типу.
Розмір типу можна знайти, використовуючи функцію:
int MPI_Type_size(MPI_Datatype type, MPI_Aint *size)
де type – тип даних, розмір якого визначається;
size – розмір типу.
Визначення нижньої і верхньої границі типу може бути вико-
нано за допомогою функцій:
int MPI_Type_lb(MPI_Datatype type, MPI_Aint *disp)
та
int MPI_Type_ub(MPI_Datatype type, MPI_Aint *disp)
де type – тип даних, нижня границя якого визначається;
disp – нижня/верхня границя типу.
Важливою і необхідною при конструюванні похідних типів є
функція отримання адреси змінної:
int MPI_Address(void *location, MPI_Aint *address)
де location – адреса пам’яті;
address – адреса пам’яті в переносимому MPI-форматі.
Слід зазначити, що ця функція є переносимим варіантом за-
собів отримання адрес в алгоритмічних мовах C і Fortran.
23.2 Способи конструювання похідних типів даних
Для зниження складності в MPI передбачені декілька різних
способів конструювання похідних типів :
- неперервний спосіб дозволяє визначити неперервний набір
елементів існуючого типу як новий похідний тип;
220