ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
118
MPI_NULL_COPY_FN
MPI_NULL_DELETE_FN
MPI_DUP_FN
Следующее есть типы Си, также включенные в файл mpi.h.
/* скрытые типы (Си) */
MPI_Aint
MPI_Status
/* дескрипторы различных структур (Си) */
MPI_Group
MPI_Comm
MPI_Datatype
MPI_Request
MPI_Op
MPI_Errhandler
/* прототипы для определенных пользователем функций (Си) */
typedef int MPI_Copy_function(MPI_Comm oldcomm, int keyval,
void *extra_state, void *attribute_val_in,
void *attribute_val_out, int *flag);
typedef int MPI_Delete_function(MPI_Comm comm, int keyval,
void *attribute_val, void *extra_state)
typedef void MPI_Handler_function(MPI_Comm *, int *, ...);
typedef void MPI_User_function( void *invec, void *inoutvec, int
*len,
MPI_Datatype *datatype);
Далее даны примеры декларирования каждой из определенных пользователем
функций для языка Fortran.
Аргумент пользовательской функции MPI_OP_CREATE декларируется сле-
дующим образом:
SUBROUTINE USER_FUNCTION( INVEC, INOUTVEC, LEN, TYPE)
<type> INVEC(LEN), INOUTVEC(LEN)
INTEGER LEN, TYPE
Аргумент функции копирования MPI_KEYVAL_CREATE декларируется:
SUBROUTINE COPY_FUNCTION(OLDCOMM, KEYVAL, EXTRA_STATE,
ATTRIBUTE_VAL_IN, ATTRIBUTE_VAL_OUT, FLAG, IERR)
INTEGER OLDCOMM, KEYVAL, EXTRA_STATE, ATTRIBUTE_VAL_IN,
ATTRIBUTE_VAL_OUT, IERR
LOGICAL FLAG
Аргумент функции удаления MPI_KEYVAL_CREATE декларируется так:
SUBROUTINE DELETE_FUNCTION(COMM, KEYVAL, ATTRIBUTE_VAL, EX-
TRA_STATE, IERR)
INTEGER COMM, KEYVAL, ATTRIBUTE_VAL, EXTRA_STATE, IERR