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