next up previous contents
Next: Конструктор универсальной (графовой) топологии Up: Топологические конструкторы Previous: Конструктор декартовой топологии   Contents

Декартова функция MPI_DIMS_CREATE

В декартовой топологии функция MPI_DIMS_CREATE помогает пользователю выбрать выгодное распределение процессов по каждой координате в зависимости от числа процессов в группе и некоторых ограничений, определеных пользователем. Эта функция используется, чтобы распределить все процессы (размер группы MPI_COMM_WORLD) в n-мерную топологическую среду.

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

MPI_DIMS_CREATE(nnodes, ndims, dims)

IN nnodes количество узлов решетки (целое)
IN ndims число размерностей декартовой решетки(целое)
INOUT dims целочисленный массив размера ndims, указывающий количество вершин в каждой размерности.

int MPI_Dims_create(int nnodes, int ndims, int *dims)

MPI_DIMS_CREATE(NNODES, NDIMS, DIMS, IERROR)
INTEGER NNODES, NDIMS, DIMS(*), IERROR

void MPI::Compute_dims(int nnodes, int ndims, int dims[])

Элементы массива dims описывают декартову решетку координат с числом размерностей ndims и общим количеством узлов nnodes. Количество узлов по размерностям нужно сделать насколько возможно близкими друг другу, используя соответствующий алгоритм делимости. Вызывающая подпрограмма может дальше ограничить выполнение этой функции, задавая количество элементов массива dims. Если размерность dims[i] есть положительное число, функция не будет изменять число узлов в направлении i; будут изменены только те элементы, для которых dims[i] = 0.

Отрицательные значения dims[i] неверны. Также будет неверно, если значение nnodes не кратно произведению dims[i].

Аргументdims[i], установленный вызывающей программой, будет упорядочен по убыванию. Массив dims удобен для использования в качестве входного для функции MPI_CART_CREATE. Функцией MPI_DIMS_CREATE является локальной.

Пример 6.1


dims перед вызовом вызов функции dims после возврата управления
(0,0) MPI_DIMS_CREATE(6, 2, dims) (3,2)
(0,0) MPI_DIMS_CREATE(7, 2, dims) (7,1)
(0,3,0) MPI_DIMS_CREATE(6, 3, dims) (2,3,1)
(0,3,0) MPI_DIMS_CREATE(7, 3, dims) неверный вызов


next up previous contents
Next: Конструктор универсальной (графовой) топологии Up: Топологические конструкторы Previous: Конструктор декартовой топологии   Contents
Alex Otwagin 2002-12-10