Page 169 - 4868
P. 169

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

               процесу. У цій операції над збираними значеннями здійснюється та або інша
               обробка  даних  (для  підкреслення  останнього  моменту  ця  операція  ще
               іменується  операцією  редукції  даних  ).  Як  і  раніше,  реалізація  операції
               редукції  за  допомогою  звичайних  парних  операцій  передачі  даних  є
               неефективною  і  досить  трудомісткою.  Для  найкращого  виконання  дій,
               пов’язаних з редукцією даних, в MPI передбачена функція:

                     int MPI_Reduce(void *sendbuf, void *recvbuf, int count,
                           MPI_Datatype type, MPI_Op op, int root, MPI_Comm comm)

               де
                       sendbuf – буфер пам’яті з повідомленням, що відправляється;
                       recvbuf – буфер пам’яті для результуючого повідомлення (тільки для
               процесу з рангом root );
                       count – кількість елементів в повідомленнях;
                       type – тип елементів повідомлень;
                       op – операція, яка має бути виконана над даними;
                       root – ранг процесу, на якому має бути отриманий результат;
                       comm – комунікатор, у рамках якого виконується операція.
                     В якості операцій редукції даних можуть бути використані MPI операції
               з таблиці 2.3.

                     Таблиця 2.3 – Базові типи операцій MPI для функцій редукції даних
                 Операції                                          Опис
                 MPI_MAX         Визначення максимального значення
                 MPI_MIN         Визначення мінімального значення

                 MPI_SUM         Визначення суми значень
                 MPI_PROD  Визначення добутку значень
                 MPI_LAND  Виконання логічної операції «І» над значеннями повідомлень
                 MPI_BAND  Виконання бітової операції «І» над значеннями повідомлень
                 MPI_LOR         Виконання логічної операції «АБО» над значеннями
                                 повідомлень
                 MPI_BOR         Виконання бітової операції «АБО» над значеннями
                                 повідомлень
                 MPI_LXOR  Виконання логічної операції виключаючого «АБО» над
                                 значеннями повідомлень
                 MPI_BXOR  Виконання бітової операції виключаючого «АБО» над
                                 значеннями повідомлень
               MPI_MAXLOC  Визначення максимальних значень і їх індексів
               MPI_MINLOC  Визначення мінімальних значень і їх індексів


                     Окрім цього стандартного набору операцій можуть бути визначені і нові
               додаткові операції безпосередньо самим користувачем бібліотеки MPI.
                     Елементи отримуваного повідомлення на процесі root є результатами
               обробки відповідних елементів передаваних процесами повідомлень, тобто:
   164   165   166   167   168   169   170   171   172   173   174