MPI provides a restricted form of ``nonblocking collective'' I/O operations for all data accesses using split collective data access routines. These routines are referred to as ``split'' collective routines because a single collective operation is split in two: a begin routine and an end routine. The begin routine begins the operation, much like a nonblocking data access (e.g., MPI_FILE_IREAD). The end routine completes the operation, much like the matching test or wait (e.g., MPI_WAIT). As with nonblocking data access operations, the user must not use the buffer passed to a begin routine while the routine is outstanding; the operation must be completed with an end routine before it is safe to free buffers, etc.
Split collective data access operations on a file handle fh are subject to the semantic rules given below.
MPI_File_read_all_begin(fh, ...); ... MPI_File_read_all(fh, ...); ... MPI_File_read_all_end(fh, ...);is erroneous.
For the purpose of consistency semantics (Section File Consistency , page File Consistency ), a matched pair of split collective data access operations (e.g., MPI_FILE_READ_ALL_BEGIN and MPI_FILE_READ_ALL_END) compose a single data access.
MPI_FILE_READ_AT_ALL_BEGIN(fh, offset, buf, count, datatype) | |
IN fh | file handle (handle) |
IN offset | file offset (integer) |
OUT buf | initial address of buffer (choice) |
IN count | number of elements in buffer (integer) |
IN datatype | datatype of each buffer element (handle) |
int MPI_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype)
int MPI_File_read_at_all_end(MPI_File fh, void *buf, MPI_Status *status)
int MPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype)
int MPI_File_write_at_all_end(MPI_File fh, void *buf, MPI_Status *status)
int MPI_File_read_all_begin(MPI_File fh, void *buf, int count, MPI_Datatype datatype)
int MPI_File_read_all_end(MPI_File fh, void *buf, MPI_Status *status)
int MPI_File_write_all_begin(MPI_File fh, void *buf, int count, MPI_Datatype datatype)
int MPI_File_write_all_end(MPI_File fh, void *buf, MPI_Status *status)
int MPI_File_read_ordered_begin(MPI_File fh, void *buf, int count, MPI_Datatype datatype)
int MPI_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status)
int MPI_File_write_ordered_begin(MPI_File fh, void *buf, int count, MPI_Datatype datatype)
int MPI_File_write_ordered_end(MPI_File fh, void *buf, MPI_Status *status)
MPI_FILE_READ_AT_ALL_BEGIN(FH, OFFSET, BUF, COUNT, DATATYPE, IERROR)
<type> BUF(*)
INTEGER FH, COUNT, DATATYPE, IERROR
INTEGER(KIND=MPI_OFFSET_KIND) OFFSET
{ void MPI::File::Read_at_all_begin(MPI::Offset offset, void* buf, int count, const MPI::Datatype& datatype) (binding deprecated, see Section Deprecated since MPI-2.2
) }
MPI_FILE_READ_AT_ALL_END(fh, buf, status) IN fh file handle (handle) OUT buf initial address of buffer (choice) OUT status status object (Status)
MPI_FILE_READ_AT_ALL_END(FH, BUF, STATUS, IERROR)
<type> BUF(*)
INTEGER FH, STATUS(MPI_STATUS_SIZE), IERROR
{ void MPI::File::Read_at_all_end(void* buf, MPI::Status& status) (binding deprecated, see Section Deprecated since MPI-2.2
) }
{ void MPI::File::Read_at_all_end(void* buf) (binding deprecated, see Section Deprecated since MPI-2.2
) }
MPI_FILE_WRITE_AT_ALL_BEGIN(fh, offset, buf, count, datatype) INOUT fh file handle (handle) IN offset file offset (integer) IN buf initial address of buffer (choice) IN count number of elements in buffer (integer) IN datatype datatype of each buffer element (handle)
MPI_FILE_WRITE_AT_ALL_BEGIN(FH, OFFSET, BUF, COUNT, DATATYPE, IERROR)
<type> BUF(*)
INTEGER FH, COUNT, DATATYPE, IERROR
INTEGER(KIND=MPI_OFFSET_KIND) OFFSET
{ void MPI::File::Write_at_all_begin(MPI::Offset offset, const void* buf, int count, const MPI::Datatype& datatype) (binding deprecated, see Section Deprecated since MPI-2.2
) }
MPI_FILE_WRITE_AT_ALL_END(fh, buf, status) INOUT fh file handle (handle) IN buf initial address of buffer (choice) OUT status status object (Status)
MPI_FILE_WRITE_AT_ALL_END(FH, BUF, STATUS, IERROR)
<type> BUF(*)
INTEGER FH, STATUS(MPI_STATUS_SIZE), IERROR
{ void MPI::File::Write_at_all_end(const void* buf, MPI::Status& status) (binding deprecated, see Section Deprecated since MPI-2.2
) }
{ void MPI::File::Write_at_all_end(const void* buf) (binding deprecated, see Section Deprecated since MPI-2.2
) }
MPI_FILE_READ_ALL_BEGIN(fh, buf, count, datatype) INOUT fh file handle (handle) OUT buf initial address of buffer (choice) IN count number of elements in buffer (integer) IN datatype datatype of each buffer element (handle)
MPI_FILE_READ_ALL_BEGIN(FH, BUF, COUNT, DATATYPE, IERROR)
<type> BUF(*)
INTEGER FH, COUNT, DATATYPE, IERROR
{ void MPI::File::Read_all_begin(void* buf, int count, const MPI::Datatype& datatype) (binding deprecated, see Section Deprecated since MPI-2.2
) }
MPI_FILE_READ_ALL_END(fh, buf, status) INOUT fh file handle (handle) OUT buf initial address of buffer (choice) OUT status status object (Status)
MPI_FILE_READ_ALL_END(FH, BUF, STATUS, IERROR)
<type> BUF(*)
INTEGER FH, STATUS(MPI_STATUS_SIZE), IERROR
{ void MPI::File::Read_all_end(void* buf, MPI::Status& status) (binding deprecated, see Section Deprecated since MPI-2.2
) }
{ void MPI::File::Read_all_end(void* buf) (binding deprecated, see Section Deprecated since MPI-2.2
) }
MPI_FILE_WRITE_ALL_BEGIN(fh, buf, count, datatype) INOUT fh file handle (handle) IN buf initial address of buffer (choice) IN count number of elements in buffer (integer) IN datatype datatype of each buffer element (handle)
MPI_FILE_WRITE_ALL_BEGIN(FH, BUF, COUNT, DATATYPE, IERROR)
<type> BUF(*)
INTEGER FH, COUNT, DATATYPE, IERROR
{ void MPI::File::Write_all_begin(const void* buf, int count, const MPI::Datatype& datatype) (binding deprecated, see Section Deprecated since MPI-2.2
) }
MPI_FILE_WRITE_ALL_END(fh, buf, status) INOUT fh file handle (handle) IN buf initial address of buffer (choice) OUT status status object (Status)
MPI_FILE_WRITE_ALL_END(FH, BUF, STATUS, IERROR)
<type> BUF(*)
INTEGER FH, STATUS(MPI_STATUS_SIZE), IERROR
{ void MPI::File::Write_all_end(const void* buf, MPI::Status& status) (binding deprecated, see Section Deprecated since MPI-2.2
) }
{ void MPI::File::Write_all_end(const void* buf) (binding deprecated, see Section Deprecated since MPI-2.2
) }
MPI_FILE_READ_ORDERED_BEGIN(fh, buf, count, datatype) INOUT fh file handle (handle) OUT buf initial address of buffer (choice) IN count number of elements in buffer (integer) IN datatype datatype of each buffer element (handle)
MPI_FILE_READ_ORDERED_BEGIN(FH, BUF, COUNT, DATATYPE, IERROR)
<type> BUF(*)
INTEGER FH, COUNT, DATATYPE, IERROR
{ void MPI::File::Read_ordered_begin(void* buf, int count, const MPI::Datatype& datatype) (binding deprecated, see Section Deprecated since MPI-2.2
) }
MPI_FILE_READ_ORDERED_END(fh, buf, status) INOUT fh file handle (handle) OUT buf initial address of buffer (choice) OUT status status object (Status)
MPI_FILE_READ_ORDERED_END(FH, BUF, STATUS, IERROR)
<type> BUF(*)
INTEGER FH, STATUS(MPI_STATUS_SIZE), IERROR
{ void MPI::File::Read_ordered_end(void* buf, MPI::Status& status) (binding deprecated, see Section Deprecated since MPI-2.2
) }
{ void MPI::File::Read_ordered_end(void* buf) (binding deprecated, see Section Deprecated since MPI-2.2
) }
MPI_FILE_WRITE_ORDERED_BEGIN(fh, buf, count, datatype) INOUT fh file handle (handle) IN buf initial address of buffer (choice) IN count number of elements in buffer (integer) IN datatype datatype of each buffer element (handle)
MPI_FILE_WRITE_ORDERED_BEGIN(FH, BUF, COUNT, DATATYPE, IERROR)
<type> BUF(*)
INTEGER FH, COUNT, DATATYPE, IERROR
{ void MPI::File::Write_ordered_begin(const void* buf, int count, const MPI::Datatype& datatype) (binding deprecated, see Section Deprecated since MPI-2.2
) }
MPI_FILE_WRITE_ORDERED_END(fh, buf, status) INOUT fh file handle (handle) IN buf initial address of buffer (choice) OUT status status object (Status)
MPI_FILE_WRITE_ORDERED_END(FH, BUF, STATUS, IERROR)
<type> BUF(*)
INTEGER FH, STATUS(MPI_STATUS_SIZE), IERROR
{ void MPI::File::Write_ordered_end(const void* buf, MPI::Status& status) (binding deprecated, see Section Deprecated since MPI-2.2
) }
{ void MPI::File::Write_ordered_end(const void* buf) (binding deprecated, see Section Deprecated since MPI-2.2
) }
Up: Data Access
Next: File Interoperability
Previous: Seek
Return to MPI-2.2 Standard Index
Return to MPI Forum Home Page
(Unofficial) MPI-2.2 of September 4, 2009
HTML Generated on September 10, 2009