ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
88
* создает новый коммуникатор reorder, наделяя декартовой
топологией
* исходный коммуникатор MPI_COMM_WORLD:
*/
MPI_Cart_create(MPI_COMM_WORLD, ndims, dims, periodic, reord-
er,
&grid_comm);
MPI_Comm_rank(grid_comm, &my_grid_rank);
/**
*Опеределяем декартовы координаты процесса по его рангу
*/
MPI_Cart_coords(grid_comm, my_grid_rank, maxdims, coordi-
nates);
printf("Process rank %i has coordinates %i %i\n",
my_grid_rank,
coordinates[0], coordinates[1]);
MPI_Finalize();
return 0;
}
Каждый процесс печатает свой номер и затем
нулевой выводит количество всех процессов
Реализация “С”
#include <stdio.h>
#include "mpi.h"
/**
* Начало и завершение:
* MPI_Init, MPI_Finalize
* Определение количества задач в приложениии и своего порядко-
вого
* номера:
* MPI_Comm_size, MPI_Comm_rank
*/
int main( int argc, char **argv )
{
int size, rank, i;
/**
* Инициализируем библиотеку
*/
MPI_Init( &argc, &argv );
/**
* Узнаем количество задач в запущенном приложении
*/
MPI_Comm_size( MPI_COMM_WORLD, &size );
/**
* ... и свой собственный номер: от 0 до (size-1)
*/
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
1...,80,81,82,83,84,85,86,87,88,89 91,92,93,94,95,96,97,98,99,100,...180