MPI_Get_elements(3)

NAME
MPI_Get_elements - Gets number of primitive elements successfully transferred in a message

SYNOPSIS
#include <mpi.h>
int MPI_Get_elements(MPI_Status *status, MPI_Datatype datatype, int *elems);

#include <pmpi.h>
int PMPI_Get_elements(MPI_Status *status, MPI_Datatype datatype, int *elems);

#include <mpi.h>
int MPI::Status::Get_elements(const MPI::Datatype &type) const;

INCLUDE 'mpif.h'
MPI_GET_ELEMENTS(status, datatype, elems, ierr)
INTEGER status(MPI_STATUS_SIZE), datatype, elems, ierr

INPUT PARAMETERS
status
    - request status (structure)
datatype
    - type of data in message (handle)

OUTPUT PARAMETER
elems
    - number of primitve elements transferred (integer).

DESCRIPTION
The MPI_Get_elements() function is used to determine how many primitive elements were transferred in a message of type datatype using a successfully completed message status. This function counts primitive elements by recursively expanding types until the primitive types that are predefined by MPI are reached. The total number of these primitive types is stored in elems. If the datatype is "empty", with no data such as MPI_UB, then this function will always return a count of zero. If the message does not contain a whole number of primitive elements then elems is set to be MPI_UNDEFINED. This can happen if for example, one byte of a four byte float is transferred. The C++ version passes the number of elements as the return value. PMPI_Get_elements() is the profiling version of this function.

ERRORS
All MPI routines except for MPI_Wtime and MPI_Wtick return an error code. The the current MPI error handler is invoked if the return value is not MPI_SUCCESS. The default error handler aborts, but this may be changed with by using the MPI_Errhandler_set() function. The predefined error handler MPI_ERRORS_RETURN may be used to cause error values to be returned instead. Note that MPI does not guarentee that an MPI program can continue past an error. In this implementation, all errors except MPI_ERR_INTERN or MPI_ERR_OTHER should always be recoverable. In C, the error code is passed as the return value. In FORTRAN, all functions have an parameter ierr which returns the error code. MPI C++ functions do not directly return an error code. However, C++ users may want to use the MPI::ERRORS_THROW_EXCEPTIONS handler. This will throw an MPI::Exception with the corresponding error code. To prevent exceptions from being raised from within C and Fortran code, they will see all error return values as MPI_ERR_PENDING when this handler is chosen. In this implementation, call MPI::throw_exception() to throw the correct exception if this occurs.
MPI_SUCCESS
    - No error;
MPI_ERR_PENDING
    - Pending exception;
MPI_ERR_TYPE
    - Invalid data type;
MPI_ERR_ARG
    - Invalid status pointer;
MPI_ERR_COUNT
    - Invalid elements pointer.

SEE ALSO
MPI_Test(3), MPI_Wait(3), MPI_Test_cancelled(3), MPI_Get_count(3)