next up previous contents
Next: Топологические функции низкого уровня Up: Топологические конструкторы Previous: Сдвиг в декартовых координатах   Contents

Декомпозиция декартовых структур

Синтаксис функции MPI_CART_SUB представлен ниже.

MPI_CART_SUB(comm, remain_dims, newcomm)

IN comm коммуникатор с декартовой топологией (дескриптор)
IN remain_dims i-ый элемент в remain_dims показывает, содержится ли i-ая размерность в подрешетке (true) или нет (false) (вектор логических элементов)
OUT newcomm коммуникатор, содержащий подрешетку, которая включает вызываемый процесс (дескриптор)

int MPI_Cart_sub(MPI_Comm comm,
int *remain_dims, MPI_Comm *newcomm)

MPI_CART_SUB(COMM, REMAIN_DIMS, NEWCOMM, IERROR)
INTEGER COMM, NEWCOMM, IERROR
LOGICAL REMAIN_DIMS(*)

MPI::Cartcomm MPI::Cartcomm::Sub(const bool remain_dims[]) const

Если декартова топология была создана с помощью MPI_CART_CREATE, то функция MPI_CART_SUB может использоваться для декомпозиции группы в подгруппы, которые являются декартовыми подрешетками, и для построения для каждой подгруппы коммуникаторов с подрешеткой с декартовой топологией. (Эта функция близка к MPI_COMM_SPLIT).

Пример 6.5 Допустим, что функция MPI_CART_CREATE(..., comm) создала решетку размером (2 $\times $ 3 $\times $ 4). Пусть remain_dims = (true, false, true). Тогда обращение к

MPI_CART_SUB (comm, remain_dims, comm_new),

создаст три коммуникатора, каждый с восьмью процессами размерности 2$\times $4 в декартовой топологии. Если remain_dims = (false, false, true), то обращение к MPI_CART_SUB (comm,
remain_dims, comm_new)
создает шесть непересекающихся коммуникаторов, каждый с четырьмя процессами в одномерной декартовой топологии.



Alex Otwagin 2002-12-10