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

parallel / 8-2010

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

#:

int MPI_Attr_put(MPI_Comm comm, int keyval, void* attribute)

MPI_Attr_put(comm, keyval, attribute, ierr)

attribute, %

MPI_Attr_get.

keyval.

#:

int MPI_Attr_get(MPI_Comm comm, int keyval, void *attribute, int *flag)

MPI_Attr_get(comm, keyval, attribute, flag, ierr)

attribute,

keyval. # ,

.

2008

#:

int MPI_Attr_delete(MPI_Comm comm, int keyval)

MPI_Attr_delete(comm, keyval, ierr)

. 0 '

$ delete_fn,

keyval. # comm ,

.

2008

(ex01h.f90)

program main_mpi include 'mpif.h' integer rank, ierr

integer numprocs, newcomm integer key, attr, extra external copy_fun, del_fun logical flag

call MPI_Init(ierr)

call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr)

call MPI_Keyval_create(copy_fun, del_fun, key, extra, ierr)

ATTR = 120

call MPI_Attr_put(MPI_COMM_WORLD, key, attr, ierr)

call MPI_Attr_get(MPI_COMM_WORLD, key, attr, flag, ierr)

print *, "PROCESS = ", RANK, " BEFORE DUP ATTRIBUTE = ", attr call MPI_Comm_dup(MPI_COMM_WORLD, newcomm, ierr)

2008

call MPI_Attr_get(newcomm, key, attr, flag, ierr)

if (flag) then

print *, "process = ", rank, " after dup attribute = ", attr

end if

call MPI_Comm_free(newcomm, ierr) call MPI_Finalize(ierr)

stop end

2008

subroutine copy_fun(comm, keyval, extra, attr_in, attr_out, flag, ierr)

integer comm, keyval, fuzzy, attr_in, attr_out logical flag

include 'mpif.h' attr_out = attr_in + 1 flag =.true.

ierr = MPI_SUCCESS end

subroutine del_fun(comm, keyval, attr, extra, ierr) integer comm, keyval, attr, extra, ierr

include 'mpif.h' ierr = MPI_SUCCESS

if(keyval /= MPI_KEYVAL_INVALID) then attr = attr - 1

end if return end

2008

1 :

2008

MPI-1 MPI-2.

2008

MPI-1 MPI-2.

$ MPI-2 , %

MPI

.

" ( MPI-1) :

MPI-

;

;

- ;

$ ;

;

% ;

% $ ;

.

2008

2008

MPI-

MPI-1

$ . /

, , « »

. - MPI-2. 2 ( )

. #

.

2008

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