Средства программирования для многопроцессорных вычислительных систем. Немнюгин C.А. - 72 стр.

UptoLike

Составители: 

72
Атрибуты
Механизм
назначения
атрибутов
является
дополнительным
средством
обмена
информацией
между
процессами
.
Создание
нового
ключа
атрибута
keyval
(
выходной
параметр
)
int MPI_Keyval_create(MPI_Copy_function *copy_fn, MPI_Delete_function
*delete_fn, int *keyval, void *extra_state)
MPI_KEYVAL_CREATE(COPY_FN, DELETE_FN, KEYVAL, EXTRA_STATE, IERR)
Ключи
уникальны
для
каждого
процесса
и
не
видны
пользователю
,
хотя
явным
образом
хранятся
в
виде
целых
значений
.
Будучи
однажды
задан
,
ключ
может
быть
использован
для
задания
атрибутов
и
доступа
к
ним
в
любом
коммуникаторе
.
Функция
copy_fn
вызывается
,
когда
коммуникатор
дублируется
подпрограммой
MPI_Comm_dup
,
а
функция
delete_fn
используется
для
удаления
.
Параметр
extra_state
задает
дополнительную
информацию
(
состояние
)
для
функций
копирования
и
удаления
.
Задание
типа
функции
MPI_Copy_function
typedef int MPI_Copy_function(MPI_Comm oldcomm, int keyval, void
*extra_state, void *attribute_val_in, void *attribute_val_out, int
*flag)
SUBROUTINE COPY_FUNCTION(OLDCOMM, KEYVAL, EXTRA_STATE,
ATTRIBUTE_VAL_IN, ATTRIBUTE_VAL_OUT, FLAG, IERR)
Функция
копирования
вызывается
для
каждого
значения
ключа
в
исходном
коммуникаторе
в
произвольном
порядке
.
Каждое
обращение
к
функции
копирования
выполняется
со
значением
ключа
и
соответствующим
ему
атрибутом
.
Если
она
возвращает
значение
флага
flag
= 0,
атрибут
удаляется
из
продублированного
коммуникатора
.
В
противном
случае
(
flag
= 1)
устанавливается
новое
значение
атрибута
,
равное
значению
,
возвращенному
в
параметре
attribute_val_out
.
Функцию
copy_fn
в
языках
C
или
FORTRAN
можно
определить
значениями
MPI_NULL_COPY_FN
или
MPI_DUP_FN
.
Значение
MPI_NULL_COPY_FN
является
функцией
,
которая
не
выполняет
никаких
действий
,
только
возвращает
значение
флага
flag
= 0
и
MPI_SUCCESS
.
Значение
MPI_DUP_FN
представляет
собой
простейшую
функцию
дублирования
.
Она
возвращает
значение
флага
flag
= 1,
значение
атрибута
в
переменной
attribute_val_out
и
код
завершения
MPI_SUCCESS
.
Аналогичной
copy_fn
является
функция
удаления
,
которая
определяется
следующим
образом
.
Функция
delete_fn
вызывается
,
когда
коммуникатор
удаляется
вызовом
MPI_Comm_free
или
при
вызове
MPI_Attr_delete
.
Она
должна
иметь
тип
MPI_Delete_function
,
который
определяется
следующим
образом
:
typedef int MPI_Delete_function(MPI_Comm comm, int keyval, void
*attribute_val, void *extra_state);
SUBROUTINE DELETE_FUNCTION(COMM, KEYVAL, ATTRIBUTE VAL, EXTRA STATE,
IERR)
Эта
функция
вызывается
подпрограммами
MPI_Comm_free
,
MPI_Attr_delete
и
MPI_Attr_put
.
Функция
удаления
может
быть
"
пустой
"
MPI_NULL_DELETE_FN
.