Page 60 - 6601
P. 60
- periods - масив довжини ndims, визначає, чи є решітка
періодичною уздовж відповідного виміру.
- reorder - параметр допустимості зміни нумерації процесів
- cartcomm – створюваний комунікатор з декартовою
топологією.
Для визначення декартових координат процесу по його
номеру можна скористатися функцією:
int MPI_Card_coords(MPI_Comm comm, int rank, int ndims, int
*coords)
де:
- comm – комунікатор з топологією решітки
- rank - номер процесу, для якого визначаються декартові
координати
- ndims - розмірність решітки
- coords - декартові координати процесу, які визначаються
функцією.
Зворотна дія – визначення номеру процесу по його
декартових координатах – забезпечується за допомогою функції:
int MPI_Cart_rank(MPI_Comm comm, int *coords, int *rank)
де
- comm – комунікатор з топологією решітки
- coords - декартові координати процесу
- rank - номер процесу, що визначається функцією.
Між процесами, організованими в декартову решітку, можна
виконувати два типи зсувів даних у групі з N процесів:
циклічний зсув на J позицій уздовж ребра решітки.
Дані від процесу K пересилаються процесу з
номером (J + K) mod N;
лінійний зсув на J позицій уздовж ребра решітки,
коли дані в процесі K пересилаються процесу з
номером J + K, якщо номер адресата знаходиться в
межах між 0 і N.
Функція MPI_Cart_shift забезпечує отримання номерів
процесів, з якими поточний процес (процес, що викликав функцію
MPI_Cart_shift) повинен виконати обмін даними:
58