Page 177 - 4868
P. 177
175 Ошибка! Стиль не определен.
визначення типів з блоками однакового розміру (ця функція передбачається
стандартом 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. Оголошення похідних типів і їх видалення
Розглянуті в попередньому пункті функції конструювання дозволяють
визначити похідний тип даних. Додатково перед використанням створений
тип має бути оголошений за допомогою функції:
int MPI_Type_commit(MPI_Datatype *type)
де
type – оголошуваний тип даних.
При завершенні використання похідний тип має бути видалений за
допомогою функції:
int MPI_Type_free(MPI_Datatype *type)
де
type – тип даних, що видаляється.
Разом з розглянутими методами конструювання похідних типів в MPI
передбачений і явний спосіб збирання і розбирання повідомлень, що містять
значення різних типів і розташовуються в різних областях пам’яті.
Для використання цього підходу має бути визначений буфер пам’яті
достатнього розміру для збирання повідомлення. Дані, що входять до складу
повідомлення дані мають бути упаковані у буфер за допомогою функції:
int MPI_Pack(void *data, int count, MPI_Datatype type,
void *bufint bufsize, int *bufpos, MPI_Comm comm)
де
data – буфер пам’яті з елементами для упаковки;
count – кількість елементів у буфері;