4.16 Canonical MPI_PACK and MPI_UNPACK

These functions read/write data to/from the buffer in the ``external32'' data format specified in Section 9.5.2, and calculate the size needed for packing. Their first arguments specify the data format, for future extensibility, but for MPI-// the only valid value of the datarep argument is ``external32.''

Advice to users. These functions could be used, for example, to send typed data in a portable format from one MPI-/ implementation to another.(End of advice to users.)

The buffer will contain exactly the packed data, without headers.



MPI_PACK_EXTERNAL(datarep, inbuf, incount, datatype, outbuf, outsize, position )

IN
datarep data representation (string)
IN
inbuf input buffer start (choice)
IN
incount number of input data items (integer)
IN
datatype datatype of each input data item (handle)
OUT
outbuf output buffer start (choice)
IN
outsize output buffer size, in bytes (integer)
INOUT
position current position in buffer, in bytes (integer)

int MPI_Pack_external(char *datarep, void *inbuf, int incount, MPI_Datatype datatype, void *outbuf, MPI_Aint outsize, MPI_Aint *position)



MPI_PACK_EXTERNAL(DATAREP, INBUF, INCOUNT, DATATYPE, OUTBUF, OUTSIZE, POSITION, IERROR)INTEGER INCOUNT, DATATYPE, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) OUTSIZE, POSITION
CHARACTER*(*) DATAREP
<type> INBUF(*), OUTBUF(*)



int MPI::Datatype::Pack_external(const char* datarep, const void* inbuf, int incount, void* outbuf, MPI::Aint outsize, MPI::Aint& position) const



void



MPI_UNPACK_EXTERNAL(datarep, inbuf, incount, datatype, outbuf, outsize, position )

IN
datarep data representation (string)
IN
inbuf input buffer start (choice)
IN
insize input buffer size, in bytes (integer)
INOUT
position current position in buffer, in bytes (integer)
OUT
outbuf output buffer start (choice)
IN
outcount number of output data items (integer)
IN
datatype datatype of output data item (handle)

int MPI_Unpack_external(char *datarep, void *inbuf, MPI_Aint insize, MPI_Aint *position, void *outbuf, int outcount, MPI_Datatype datatype)



MPI_UNPACK_EXTERNAL(DATAREP, INBUF, INSIZE, POSITION, OUTBUF, OUTCOUNT, DATATYPE, IERROR)INTEGER OUTCOUNT, DATATYPE, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) INSIZE, POSITION
CHARACTER*(*) DATAREP
<type> INBUF(*), OUTBUF(*)



int MPI::Datatype::Unpack_external(const char* datarep, const void* inbuf, MPI::Aint insize, MPI::Aint& position, void* outbuf, int outcount) const



void



MPI_PACK_EXTERNAL_SIZE( datarep, incount, datatype, size )

IN
datarep data representation (string)
IN
incount number of input data items (integer)
IN
datatype datatype of each input data item (handle)
OUT
size output buffer size, in bytes (integer)

int MPI_Pack_external_size(char *datarep, int incount, MPI_Datatype datatype, MPI_Aint *size)



MPI_PACK_EXTERNAL_SIZE(DATAREP, INCOUNT, DATATYPE, SIZE, IERROR)INTEGER INCOUNT, DATATYPE, IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) SIZE
CHARACTER*(*) DATAREP



int MPI::Datatype::Pack_external_size(const char* datarep, int incount) const



MPI::Aint

MPI-Standard for MARMOT