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



Пример 2


// Создание коммуникатора в виде двумерной квадратной решетки // и коммуникаторов для каждой строки и каждого столбца решетки 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); }

Пример 7.2.

Закрыть окно






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