Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

parallel / 7-2010

.pdf
Скачиваний:
34
Добавлен:
31.05.2015
Размер:
1.31 Mб
Скачать

periods ndims ,

, * ( true)

! ;

reorder « »,

* . ( % !

ndims, dims periods. MPI_Cart_create

( !

, ).

2008

!

" ,

.

!

" MPI_Cart_coords:

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

MPI_Cart_coords(comm, rank, maxdims, coords, ierr)

:

comm , ;

rank comm;

maxdims coords " .

coords ( ndims), ! "

.

MPI_Cart_rank. &

" ! (rank)

comm:

int MPI_Cart_rank(MPI_Comm comm, int *coords, int *rank)

MPI_Cart_rank(comm, coords, rank, ierr)

coords ndims,

" .

MPI_Cart_rank MPI_Cart_coords .

(ex05e.cpp)

#include "mpi.h" #include <stdio.h>

int main(int argc,char *argv[])

{

MPI_Comm grid_comm; int dims[2];

int periodic[2];

int reorder = 1, q = 5, ndims = 2, maxdims = 2; int coordinates[2];

int my_grid_rank; int coords[2];

MPI_Comm row_comm;

dims[0] = dims[1] = q; periodic[0] = periodic[1] = 1; coords[0] = 0; coords[1] = 1; MPI_Init(&argc, &argv);

MPI_Cart_create(MPI_COMM_WORLD, ndims, dims, periodic,

reorder, &grid_comm); MPI_Comm_rank(grid_comm, &my_grid_rank);

MPI_Cart_coords(grid_comm, my_grid_rank, maxdims, coordinates);

printf("Process rank %i has coordinates %i %i\n", my_grid_rank, coordinates[0], coordinates[1]); MPI_Finalize();

return 0;

}

grid_comm

* ,

* . &

, ! grid_comm !

" MPI_Comm_rank. $

MPI_Cart_coords.

* 5×5,

! 25.

:

MPI_Cart_sub " comm

, " * *

:

int MPI_Cart_sub(MPI_Comm comm, int *remain_dims, MPI_Comm *comm_new)

MPI_Cart_sub(comm, remain_dims, comm_new, ierr)

2 i- remain_dims , ! i-

* (« »).

newcomm, ! " *, !

.

* *,

" , !:

int coords[2]; MPI_Comm row_comm;

coords[0] = 0; coords[1] = 1; MPI_Cart_sub(grid_comm, coords, &row_comm);

MPI_Cart_sub

. 1 coords , !

" .

. , MPI_Cart_sub %,

MPI_Comm_split, "

, ! "

MPI_Cart_sub

, .

( % , comm, ! " MPI_Cart_get:

int MPI_Cart_get(MPI_Comm comm, int maxdims, int *dims, int *periods, int *coords)

MPI_Cart_get(comm, maxdims, dims, periods, coords, ierr)

maxdims dims, periods vectors " , :

dims , "

! ;

periods , "

(true, * ) ! ;

coords , "

" .

Соседние файлы в папке parallel