« Return to documentation listing
NAME
MPI_Comm_create_keyval - Generates a new attribute key.
SYNTAX
C Syntax
#include <mpi.h>
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)
Fortran Syntax (see FORTRAN 77 NOTES)
INCLUDE 'mpif.h'
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
C++ Syntax
#include <mpi.h>
static in 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)
INPUT PARAMETERS
comm_copy_attr_fn
Copy callback function for comm_keyval (function).
comm_delete_attr_fn
Delete callback function for comm_keyval (function).
extra_state
Extra state for callback functions.
OUTPUT PARAMETER
comm_keyval
Key value for future access (integer).
IERROR Fortran only: Error status (integer).
DESCRIPTION
This function replaces MPI_Keyval_create, the use of which is depre-
cated. The C binding is identical. The Fortran binding differs in that
extra_state is an address-sized integer. Also, the copy and delete
callback functions have Fortran bindings that are consistent with
address-sized attributes.
The argument comm_copy_attr_fn may be specified as
MPI_COMM_NULL_COPY_FN or MPI_COMM_DUP_FN from C, C++, or Fortran.
typedef int MPI_Comm_copy_attr_function(MPI_Comm oldcomm, int comm_keyval,
void *extra_state, void *attribute_val_in,
void *attribute_val_out, int *flag);
and
typedef int MPI_Comm_delete_attr_function(MPI_Comm comm, int comm_keyval,
void *attribute_val, void *extra_state);
which are the same as the MPI-1.1 calls but with a new name. The old
names are deprecated.
The Fortran callback functions are:
SUBROUTINE COMM_COPY_ATTR_FN(OLDCOMM, COMM_KEYVAL, EXTRA_STATE,
ATTRIBUTE_VAL_IN, ATTRIBUTE_VAL_OUT, FLAG, IERROR)
INTEGER OLDCOMM, COMM_KEYVAL, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) EXTRA_STATE, ATTRIBUTE_VAL_IN,
ATTRIBUTE_VAL_OUT
LOGICAL FLAG
and
SUBROUTINE COMM_DELETE_ATTR_FN(COMM, COMM_KEYVAL, ATTRIBUTE_VAL, EXTRA_STATE,
IERROR)
INTEGER COMM, COMM_KEYVAL, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) ATTRIBUTE_VAL, EXTRA_STATE
The C++ callbacks are:
typedef int MPI::Comm::Copy_attr_function(const MPI::Comm& oldcomm,
int comm_keyval, void* extra_state, void* attribute_val_in,
void* attribute_val_out, bool& flag);
and
typedef int MPI::Comm::Delete_attr_function(MPI::Comm& comm,
int comm_keyval, void* attribute_val, void* extra_state);
FORTRAN 77 NOTES
The MPI standard prescribes portable Fortran syntax for the EXTRA_STATE
argument only for Fortran 90. FORTRAN 77 users may use the non-portable
syntax
INTEGER*MPI_ADDRESS_KIND EXTRA_STATE
where MPI_ADDRESS_KIND is a constant defined in mpif.h and gives the
length of the declared integer in bytes.
ERRORS
Almost all MPI routines return an error value; C routines as the value
of the function and Fortran routines in the last argument. C++ func-
tions do not return errors. If the default error handler is set to
MPI::ERRORS_THROW_EXCEPTIONS, then on error the C++ exception mechanism
will be used to throw an MPI:Exception object.
Before the error value is returned, the current MPI error handler is
called. By default, this error handler aborts the MPI job, except for
I/O function errors. The error handler may be changed with
MPI_Comm_set_errhandler; the predefined error handler MPI_ERRORS_RETURN
may be used to cause error values to be returned. Note that MPI does
« Return to documentation listing
|