Page 61 - 6601
P. 61

int  MPI_Card_shift(MPI_Comm  comm,  int  dir,  int  disp,  int
                            *source, int *dst),
                                   де:
                                    - comm  – комунікатор з топологією решітки,
                                    - dir  - номер виміру, по якому виконується зсув.
                                    - disp  - величина зсуву (<0 – зсув до початку виміру)
                                    - source – номер процесу, від якого повинні бути отримані
                            дані
                                    - dst  - номер процесу якому повинні бути відправлені дані.
                                   Слід зазначити, що функція MPI_Cart_shift тільки визначає
                            номери процесів, між якими повинен бути виконаний обмін даними
                            в  ході  операції  зсуву.  Безпосередня  передачами  даних  може  бути
                            виконана, наприклад, за допомогою функції MPI_Sendrecv.
                                   8.1.3  Віртуальні топології графу.
                                   Для створення комунікатора з топологією типу граф в MPI
                            призначена функція:
                                   int  MPI_Graph_create(MPI_Comm  oldcomm,  int  nnodes,  int
                            *index, int *edges, int reorder, MPI_Comm *graphcomm),
                                   де:
                                   - oldcomm  - початковий  комунікатор
                                   - nnodes   - кількість  вершин  графу
                                   - index    - кількість  вихідних дуг  для  кожної  вершини
                                   - edges    - послідовний  список  дуг  графу
                                   -  reorder    -  параметр    допустимості    зміни    нумерації
                            процесів
                                   - cartcomm – створюваний  комунікатор  з  топологією  типу
                            граф.
                                   Наведемо  ще      дві      корисні      функції      для      роботи      з
                            топологіями      графа.      Кількість      сусідніх  процесів,  в  яких  від
                            процесу,  що  перевіряється,  є  вихідні  дуги,  можна  визначити  за
                            допомогою функції:
                                   int MPI_Graph_neighbors_count(MPI_Comm comm,int rank, int
                            *nneighbors).
                                   Отримання рангів сусідніх вершин забезпечується функцією:
                                   int  MPI_Graph_neighbors(MPI_Comm comm,  int  rank,  int
                                  mneighbors, int *neighbors)
                                   де mneighbors є розмір масиву neighbors.


                                                           59
   56   57   58   59   60   61   62   63   64