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
   216   217   218   219   220   221   222   223   224   225   226