next up previous contents
Next: Топологии процессов Up: Кэширование Previous: Пример c атрибутами   Contents

Устаревшие функции

MPI-2 вводит новые функции кэширования атрибутов по следующим двум причинам:

Прежние функции кэширования, хотя они и устарели, по-прежнему являются частью стандарта MPI.

Устаревшие функции кэширования для MPI-I перечислены ниже. Нейтральные по отношению к языку определения и привязки для Си те же самые. Привязки для языка ФОРТРАН отличаются тем, что все аргументы в новых функциях имеют тип INTEGER (KIND=MPI_INTEGER_KIND).

1) Функция MPI_KEYVAL_CREATE (даны представления для языков Си и ФОРТРАН)

MPI_KEYVAL_CREATE (copy_fn, delete_fn, keyval, extra_state) int MPI_Keyval_create (MPI_Copy_fmiction *copy_fn, MPI_Delete_fmiction *delete_fn, int *keyval, void* extra_state) MPI_KEYVAL_CREATE (COPY_FN, DELETE_FN, KEYVAL, EXTRA_STATE, IERROR) EXTERNAL COPY_FN, DELETE_FN INTEGER KEYVAL, EXTRA_STATE, IERROR

замещается новой функцией MPI_COMM_CREATE_KEYVAL, синтаксис которой приведен ниже.

MPI_COMM_CREATE_KEYVAL(comm_copy_attr_fn,
comm_delete_attr_fn, comm_keyval, extra_state)

IN comm_copy_attr_fn функция копирования для comm_keyval (функция)
IN comm_delete_attr_fn функция удаления для comm_keyval (функция)
OUT comm_keyval значения ключа для будущего обращения (целое)
IN extra_state дополнительное состояние для функций обратного вызова

int MPI_Comm_create_keyval(
MPI_Comm_copy_attr_function *comm_copy_attr_fn,
MPI_Comm_delete_attr_function *comm_delete_attr_fn,
int *comm_keyval, void *extra_state)

MPI_COMM_CREATE_KEYVAL(COMM_COPY_ATTR_FN, COMM_DELETE_ATTR_FN, COMM_KEYVAL,
EXTRA_STATE, IERROR)
EXTERNAL COMM_COPY_ATTR_FN, COMM_DELETE_ATTR_FN INTEGER COMM_KEYVAL, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) EXTRA_STATE

static int MPI::Comm::Create_keyval(
MPI::Comm::Copy_attr_function* comm_copy_attr_fn,
MPI::Comm::Delete_attr_function* comm_delete_attr_fn, void* extra_state)

2) Функция MPI_KEYVAL_FREE (даны представления для языков Си и ФОРТРАН)

MPI_KEYVAL_FREE(keyval) int MPI_Keyval_free(int *keyval) MPI_KEYVAL_FREE(KEYVAL, IERROR) INTEGER KEYVAL, IERROR

замещается функцией MPI_COMM_FREE_KEYVAL, синтаксис которой приведен ниже.

MPI_COMM_FREE_KEYVAL(comm_keyval)

INOUT comm_keyval значение ключа (целое)

int MPI_Comm_free_keyval(int *comm_keyval)

MPI_COMM_FREE_KEYVAL(COMM_KEYVAL, IERROR)
INTEGER COMM_KEYVAL, IERROR

static void MPI::Comm::Free_keyval(int& comm_keyval)

3) Функция MPI_ATTR_PUT (даны представления для языков Си и ФОРТРАН)

MPI_ATTR_PUT(comm, keyval, attribute_val) int MPI_Attr_put (MPI_Conim comm, int keyval, void* attribute_val) MPI_ATTR_PUT (COMM, KEYVAL, ATTRIBUTE_VAL, IERROR) INTEGER COMM, KEYVAL, ATTRIBUTE_VAL, IERROR

замещается функцией MPI_COMM_SET_ATTR, синтаксис которой приведен ниже.

MPI_COMM_SET_ATTR(comm, comm_keyval, attribute_val)

INOUT comm коммуникатор, из которого будут подключаться атрибуты (дескриптор)
IN comm_keyval значение ключа (дескриптор)
IN attribute_val значение атрибута

int MPI_Comm_set_attr(MPI_Comm comm,
int comm_keyval, void *attribute_val)

MPI_COMM_SET_ATTR(COMM, COMM_KEYVAL, ATTRIBUTE_VAL, IERROR)
INTEGER COMM, COMM_KEYVAL, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) ATTRIBUTE_VAL

void MPI::Comm::Set_attr(int comm_keyval,
const void* attribute_val) const

4) Функция MPI_ATTR_GET (даны представления для языков Си и ФОРТРАН)

MPI_ATTR_GET(comm, keyval, attribute_val, flag) int MPI_Attr_get (MPI_Comm comm, int keyval, void *attribute_val, int *flag) MPI_ATTR_GET(COMM, KEYVAL, ATTRIBUTE_VAL, FLAG, IERROR) INTEGER COMM, KEYVAL, ATTRIBUTE_VAL, IERROR LOGICAL FLAG

замещается функцией MPI_COMM_GET_ATTR, синтаксис которой представлен ниже.

MPI_COMM_GET_ATTR(comm, comm_keyval, attribute_val, flag)

IN comm коммуникатор, к которому подключаются атрибуты (дескриптор)
IN comm_keyval значение ключа (целое)
OUT attribute_val значение атрибута, пока отсутствует состояние flag = false
OUT flag false, если никакой атрибут не связан с ключом (логическое значение)

int MPI_Comm_get_attr(MPI_Comm comm,
int comm_keyval, void *attribute_val, int *flag)

MPI_COMM_GET_ATTR(COMM, COMM_KEYVAL, ATTRIBUTE_VAL, FLAG, IERROR)
INTEGER COMM, COMM_KEYVAL, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) ATTRIBUTE_VAL
LOGICAL FLAG

bool MPI::Comm::Get_attr(int comm_keyval,
void* attribute_val) const

5) Функция MPI_ATTR_DELETE (даны представления для языков Си и ФОРТРАН)

MPI_ATTR_DELETE(comm, keyval) int MPI_Attr_delete(MPI_Comm comm, int keyval) MPI_ATTR_DELETE(COMM, KEYVAL, IERROR) INTEGER COMM, KEYVAL, IERROR

замещается функцией MPI_COMM_DELETE_ATTR, синтаксис которой представлен ниже.

MPI_COMM_DELETE_ATTR(comm, comm_keyval)

INOUT comm коммуникатор, из которого удаляются атрибуты (дескриптор)
IN comm_keyval значение ключа (целое)

int MPI_Comm_delete_attr(MPI_Comm comm, int comm_keyval)

MPI_COMM_DELETE_ATTR(COMM, COMM_KEYVAL, IERROR)
INTEGER COMM, COMM_KEYVAL, IERROR

void MPI::Comm::Delete_attr(int comm_keyval)


next up previous contents
Next: Топологии процессов Up: Кэширование Previous: Пример c атрибутами   Contents
Alex Otwagin 2002-12-10