Page 41 - 6601
P. 41

процеси                                           процеси
                                а) до виконання                                              б)після виконання
                                    Рис.5.1 Демонстрація роботи функції MPI_Scatter.
                                   При  виклику  цієї  функції  процес  з  номером  root  проведе
                            передачу  даних  всім  іншим  процесам  в  комунікаторі.  Кожному
                            процесу  буде  відправлено  scount  елементів.  Процес  з  номером  0
                            отримає блок даних із sbuf з елементів із індексами від 0 до scount-1,
                            процесу  з  номером  1  буде  відправлений  блок  з  елементів  із
                            індексами  від  scount  до  2*  scount-1  і  т.д.  Тим  самим,  загальний
                            розмір  повідомлення,  що  відправляється,  повинен  бути  рівний
                            scount * p елементів, де p є кількість процесів в комунікаторі comm.
                                   Слід  зазначити,  оскільки  функція  MPI_Scatter  визначає
                            колективну операцію, виклик цієї функції при виконанні розсилки
                            даних повинен бути забезпечений в кожному процесі комунікатора.
                            Відзначимо також, що функція MPI_Scatter передає всім процесам
                            повідомлення однакового розміру.
                                   Операція  узагальненої  передачі  даних  від  всіх  процесорів
                            одному процесу (збір даних) є зворотною до процедури розподілу
                            даних (див. рис. 6.2). Для виконання цієї операції в MPI призначена
                            функція:
                            int MPI_Gather(void *sbuf, int scount, MPI_Datatype stype, void
                                   *rbuf, int rcount, MPI_Datatype rtype, int root, MPI_Comm
                                   comm),
                            де:
                                   -  sbuf,   scount,   stype   -   параметри   передаваного
                                   повідомлення;
                                   -  rbuf,  rcount,  rtype  -  параметри  повідомлення,  що
                                   приймається;


                                                           39
   36   37   38   39   40   41   42   43   44   45   46