Теория и практика параллельных вычислений


Декартовы топологии (решетки)


Декартовы топологии, в которых множество процессов представляется в виде прямоугольной решетки (см. п. 1.4.1 и рис. 1.7), а для указания процессов используется декартова система координат, широко применяются во многих задачах для описания структуры имеющихся информационных зависимостей. В числе примеров таких задач – матричные алгоритмы (см. лекции 6 и 7) и сеточные методы решения дифференциальных уравнений в частных производных (см. лекцию 11).

Для создания декартовой топологии (решетки) в MPI предназначена функция:

int MPI_Cart_create(MPI_Comm oldcomm, int ndims, int *dims, int *periods, int reorder, MPI_Comm *cartcomm),

где

  • oldcomm — исходный коммуникатор;
  • ndims — размерность декартовой решетки;
  • dims — массив длины ndims, задает количество процессов в каждом измерении решетки;
  • periods — массив длины ndims, определяет, является ли решетка периодической вдоль каждого измерения;
  • reorder — параметр допустимости изменения нумерации процессов;
  • cartcomm — создаваемый коммуникатор с декартовой топологией процессов.

Операция создания топологии является коллективной и, тем самым, должна выполняться всеми процессами исходного коммуникатора.

Для пояснения назначения параметров функции MPI_Cart_create рассмотрим пример создания двумерной решетки 4x4, в которой строки и столбцы имеют кольцевую структуру (за последним процессом следует первый процесс):

// Создание двумерной решетки 4x4 MPI_Comm GridComm; int dims[2], periods[2], reorder = 1; dims[0] = dims[1] = 4; periods[0] = periods[1] = 1; MPI_Cart_create(MPI_COMM_WORLD, 2, dims, periods, reorder, &GridComm);

Следует отметить, что в силу кольцевой структуры измерений сформированная в рамках примера топология является тором.

Для определения декартовых координат процесса по его рангу можно воспользоваться функцией:

int MPI_Cart_coords(MPI_Comm comm, int rank, int ndims, int *coords),

где

  • comm — коммуникатор с топологией решетки;
  • rank — ранг процесса, для которого определяются декартовы координаты;
  • ndims — размерность решетки;
  • coords — возвращаемые функцией декартовы координаты процесса.




Начало  Назад  Вперед



Книжный магазин