ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
77
Для
n
-мерной декартовой решетки значение аргумента direction должно нахо-
диться в пределах от 0 до
n
-1. Подпрограмма MPI_Cartdim_get позволяет определить
размерность (ndims) декартовой топологии, связанной с коммуникатором comm:
int MPI_Cartdim_get (MPI_Comm comm, int *ndims)
MPI_CARTDIM_GET(COMM, NDIMS, IERR)
Топология графа
Мы ограничимся обзором основных подпрограмм MPI, предназначенных для
работы с топологией графа. Подпрограмма MPI_Graph_create создает новый комму-
никатор comm_graph, наделенный топологией графа:
int MPI_Graph_create(MPI_Comm comm, int nnodes, int *index, int
*edges, int reorder, MPI_Comm *comm_graph)
MPI_GRAPH_CREATE(COMM, NNODES, INDEX, EDGES, REORDER, COMM_GRAPH,
IERR)
Входные параметры:
•
comm — "исходный" коммуникатор, не наделенный топологией;
•
nnodes — количество вершин графа;
•
index — целочисленный одномерный массив, содержащий порядок каждого
узла (количество связанных с ним ребер);
•
edges — целочисленный одномерный массив, описывающий ребра графа;
•
reorder — значение "истина" разрешает изменение порядка нумерации про-
цессов.
Подпрограмма MPI_Graph_neighbors возвращает соседние с данной вершины
графа:
int MPI_Graph_neighbors(MPI_Comm comm, int rank, int maxneigh-
bors, int *neighbors)
MPI_GRAPH_NEIGHBORS(COMM, RANK, MAXNEIGHBORS, NEIGHBORS, IERR)
Ее входные параметры:
•
comm — коммуникатор с топологией графа;
•
rank — ранг процесса в группе коммуникатора comm;
•
maxneighbors — размер массива neighbors.
Выходным параметром является массив neighbors, содержащий ранги процес-
сов, соседних с данным. Количество соседей (nneighbors) узла, связанного
с топологией графа, можно определить с помощью подпрограммы
MPI_Graph_neighbors_count: