Page 167 - 4868
P. 167

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

               де
                       buf,  count,  type  –  буфер  пам’яті  з  повідомленням  (для  процесу  з
               рангом  0),  що  відправляється,  і  для  прийому  повідомлень  (для  усіх  інших
               процесів );
                       root – ранг процесу, що виконує розсилку даних;

                       comm – комунікатор, у рамках якого виконується передача даних.
                     Функція MPI_Bcast здійснює розсилку даних з буфера buf, що містить
               count елементів типу type, з процесу, що має номер root, усім процесам,
               що входять до комунікатора comm (рис. 2.2).





















               Рисунок2.2 – Загальна схема операції передачі даних від одного процесу усім
                                                    іншим процесам

                     Слід зазначити, що:
                       функція MPI_Bcast визначає колективну операцію, і, тим самим, при
               виконанні необхідних розсилок даних  виклик функції  MPI_Bcast має бути
               здійснений усіма процесами вказуваного комунікатора;
                       вказуваний у функції MPI_Bcast буфер пам’яті має різне призначення
               у різних процесів: для процесу з рангом root, яким здійснюється розсилка
               даних, в цьому буфері повинне знаходитися повідомлення, що розсилається,
               а  для  усіх  інших  процесів  вказуваний  буфер  є  призначений  для  прийому
               даних, що передаються;
                       усі  колективні  операції  «несумісні»  з  парними  операціями  –  так,
               наприклад,  прийняти  широкомовне  повідомлення,  відіслане  за  допомогою
               MPI_Bcast, функцією MPI_Recv не можна, для цього можна задіяти тільки
               MPI_Bcast.
                     Приведемо        програму        для     вирішення        навчального        завдання
               підсумовування  елементів  вектору  з  використанням  розглянутої  функції
               (лістинг 2.8).

                     Лістинг 2.8– Паралельна програма підсумовування числових значень

                     #include <math.h>
                     #include <stdio.h>
                     #include <stdlib.h>
   162   163   164   165   166   167   168   169   170   171   172