Page 174 - 4868
P. 174

Ошибка! Стиль не определен.                                                              172

                     int MPI_Address(void *location, MPI_Aint *address)

               де
                      location – адреса пам’яті;
                      address – адреса пам’яті в переносимому MPI-форматі.
                     Слід  зазначити,  що  ця  функція  є  переносимим  варіантом  засобів
               отримання адрес в алгоритмічних мовах C і Fortran.


                     23.2. Способи конструювання похідних типів даних
                     Для  зниження  складності  в  MPI  передбачені  декілька  різних  способів
               конструювання похідних типів :
                       неперервний спосіб дозволяє визначити неперервний набір елементів
               існуючого типу як новий похідний тип;
                       векторний  спосіб  забезпечує  створення  нового  похідного  типу  як
               набору  елементів  існуючого  типу,  між  елементами  якого  є  регулярні
               проміжки  по  пам’яті.  При  цьому  розмір  проміжків  задається  в  числі
               елементів  початкового  типу,  тоді  як  у  варіанті  H-векторного  способу  цей
               розмір вказується у байтах;
                       індексний  спосіб  відрізняється  від  векторного  методу  тим,  що
               проміжки  між  елементами  початкового  типу  можуть  мати  нерегулярний
               характер  (є  і  H-індексний  спосіб,  що  відрізняється  способом  задання
               проміжків);
                       структурний спосіб забезпечує найзагальніший опис похідного типу
               через явну вказівку карти створюваного типу даних.
                     Далі перераховані способи конструювання похідних типів даних будуть

               розглянуті детальніше.
                     1. Безперервний  спосіб  конструювання.  При  неперервному  способі
               конструювання похідного типу даних в MPI використовується функція:
                     int  MPI_Type_contiguous(int  count,  MPI_Data_type  oldtype,
               MPI_Datatype *newtype)

               де
                       count – кількість елементів початкового типу;
                       oldtype – початковий тип даних;
                       newtype – новий тип даних, що визначається.
                     Як  випливає  з  опису,  новий  тип  newtype  створюється  як  count
               елементів  початкового  типу  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),  (MPI_DOUBLE,
               24)}
   169   170   171   172   173   174   175   176   177   178   179