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

         

в виде двумерной квадратной решетки


// Создание коммуникатора в виде двумерной квадратной решетки
// и коммуникаторов для каждой строки и каждого столбца решетки
void CreateGridCommunicators() {
int DimSize[2]; // Количество процессов в каждом измерении
// решетки
int Periodic[2]; // =1 для каждого измерения, являющегося
// периодическим
int Subdims[2]; // =1 для каждого измерения, оставляемого
// в подрешетке
DimSize[0] = GridSize;
DimSize[1] = GridSize;
Periodic[0] = 0;
Periodic[1] = 0;
// Создание коммуникатора в виде квадратной решетки
MPI_Cart_create(MPI_COMM_WORLD, 2, DimSize, Periodic, 1, &GridComm);
// Определение координат процесса в решетке
MPI_Cart_coords(GridComm, ProcRank, 2, GridCoords);

// Создание коммуникаторов для строк процессной решетки
Subdims[0] = 0; // Фиксация измерения
Subdims[1] = 1; // Наличие данного измерения в подрешетке
MPI_Cart_sub(GridComm, Subdims, &RowComm);

// Создание коммуникаторов для столбцов процессной решетки
Subdims[0] = 1;
Subdims[1] = 0;
MPI_Cart_sub(GridComm, Subdims, &ColComm);
}

Содержание  Назад  Вперед







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