Функции для кэширования типов данных:
MPI_TYPE_CREATE_KEYVAL(type_copy_attr_fn,
type_delete_attr_fn,
type_keyval,
extra_state)
IN | type_copy_attr_fn |
функция копирования для type_keyval (функция) |
|
IN | type_delete_attr_fn |
функция удаления для type_keyval (функция) |
|
OUT | type_keyval |
Ключевое значение для последующего доступа (целое) | |
IN | extra_state |
Дополнительное состояние для возвратных функций |
int MPI_Type_create_keyval(
MPI_Type_copy_attr_function *type_copy_attr_fn,
MPI_Type_delete_attr_function *type_delete_attr_fn,
int *type_keyval, void *extra_state)
MPI_TYPE_CREATE_KEYVAL (TYPE_COPY_ATTR_FN, TYPE_DELETE_ATTR_FN,
TYPE_KEYVAL, EXTRA_STATE, IERROR)
EXTERNAL TYPE_COPY_ATTR_FN, TYPE_DELETE_ATTR_FN
INTEGER TYPE_KEYVAL, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) EXTRA_STATE
static int
MPI::Datatype::
Create_keyval(MPI::Datatype::
Copy_attr_function* type_copy_attr_fn,
MPI::Datatype::
Delete_attr_function* type_delete_attr_fn,
void* extra_state)
Аргумент type_copy_attr_fn
может быть указан как
MPI_TYPE_NULL_COPY_FN
или MPI_TYPE_DUP_FN
для Си,
С++ и ФОРТРАНa. MPI_TYPE_NULL_COPY_FN
- функция, которая не
делает ничего, кроме возврата flag = 0
и MPI_SUCCESS
.
MPI_TYPE_DUP_FN
- несложная функция копирования, которая
устанавливает flag = 1
, возвращает значение attribute_val_in
в attribute_val_out
и возвращает MPI_SUCCESS
.
Аргумент type_delete_attr_fn
может быть указан как
MPI_TYPE_NULL_DELETE_FN
или для Си, С++ и ФОРТРАНa.
MPI_TYPE_NULL_DELETE_FN
- функция, которая не делает ничего, кроме
возврата MPI_SUCCESS
.
Вызываемые функции на Си:
typedef int
MPI_Type_copy_attr_function(MPI_Datatype oldtype, int type_keyval,
void *extra_state, void *attribute_val_in,
void *attribute_val_out, int *flag);
и
typedef int
MPI_Type_delete_attr_function(MPI_Datatype type, int type_keyval,
void *attribute_val, void *extra_state);
Вызываемые функции на ФОРТРАНe:
SUBROUTINE TYPE_COPY_ATTR_FN(OLDTYPE, TYPE_KEYVAL, EXTRA_STATE, &
ATTRIBUTE_VAL_IN, &
ATTRIBUTE_VAL_OUT, FLAG, IERROR)
INTEGER OLDTYPE, TYPE_KEYVAL, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) EXTRA_STATE, &
ATTRIBUTE_VAL_IN, ATTRIBUTE_VAL_OUT
LOGICAL FLAG
и
SUBROUTINE TYPE_DELETE_ATTR_FN(TYPE, TYPE_KEYVAL, ATTRIBUTE_VAL, &
EXTRA_STATE, IERROR)
INTEGER TYPE, TYPE_KEYVAL, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) ATTRIBUTE_VAL, EXTRA_STATE
Вызываемые функции на С++:
typedef int
MPI::Datatype::Copy_attr_function(const MPI::Datatype& oldtype, int type_keyval,
void* extra_state,
const void* attribute_val_in,
void* attribute_val_out, bool& flag);
и
typedef int
MPI::Datatype::Delete_attr_function (MPI::Datatype& type, int type_keyval,
void* attribute_val, void* extra_state);
MPI_TYPE_FREE_KEYVAL(type_keyval)
INOUT | type_keyval |
Ключевое значение (целое) |
int MPI_Type_free_keyval(int *type_keyval)
MPI_TYPE_FREE_KEYVAL (TYPE_KEYVAL, IERROR)
INTEGER TYPE_KEYVAL, IERROR
static void MPI::Datatype::Free_keyval(int& type_keyval)
MPI_TYPE_SET_KEYVAL(type, type_keyval, attribute_val)
INOUT | type |
Тип данных, для которого атрибут будет добавлен (указатель) | |
IN | type_keyval |
Ключевое значение (целое) | |
IN | attribute_val |
Значение атрибута |
int MPI_Type_set_attr(MPI_Datatype type,
int type_keyval,
void *attribute_val)
MPI_TYPE_SET_ATTR(TYPE, TYPE_KEYVAL, ATTRIBUTE_VAL, IERROR)
INTEGER TYPE, TYPE_KEYVAL, IRROR
INTEGER(KIND=MPI_ADDRESS_KIND) ATTRIBUTE_VAL
void MPI::Datatype::Set_attr(int type_keyval,
const void* attribute_val)
MPI_TYPE_GET_ATTR(type, type_keyval, attribute_val, flag)
IN | type |
Тип данных, для которого атрибут добавлен (указатель) | |
IN | type_keyval |
Ключевое значение (целое) | |
OUT | attribute_val |
Значение атрибута, eсли flag=false |
|
OUT | flag |
false , если нет атрибута,
ассоциированного с ключом (логический тип) |
int MPI_Type_get_attr(MPI_Datatype type, int type_keyval,
void *attribute_val, int *flag)
MPI_TYPE_GET_ATTR(TYPE, TYPE_KEYVAL, ATTRIBUTE_VAL, FLAG, IERROR)
INTEGER TYPE, TYPE_KEYVAL, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) ATTRIBUTE_VAL
LOGICAL FLAG
bool MPI::Datatype::Get_attr(int type_keyval,
void* attribute_val) const
MPI_TYPE_DELETE_ATTR(type, type_keyval)
INOUT | type |
Тип данных, для которого атрибут удаляется (указатель) | |
IN | type_keyval |
Ключевое значение (целое) |
int MPI_Type_delete_attr(MPI_Datatype type, int type_keyval)
MPI _TYPE_DELETE_ATTR (TYPE, TYPE_KEYVAL, IERROR)
INTEGER TYPE, TYPE_KEYVAL, IERROR
void MPI::Datatype::Delete_attr(int type_keyval)