H5Fset_mpi_atomicity
(
hid_t file_id
,
hbool_t flag
)
H5Fset_mpi_atomicity
is applicable only in parallel environments using MPI I/O.
The function is one of the tools used to ensure sequential consistency.
This means that a set of operations will behave as though they
were performed in a serial order consistent with the program order.
H5Fset_mpi_atomicity
sets MPI consistency semantics for data access
to the file, file_id
.
If flag
is set to TRUE
,
all file access operations will appear atomic,
guaranteeing sequential consistency.
If flag
is set to FALSE
,
enforcement of atomic file access will be turned off.
H5Fset_mpi_atomicity
is a collective function and
all participating processes must pass the same values for
file_id
and flag
.
This function is available only when the HDF5 Library is configured
with parallel support (--enable-parallel
).
It is useful only when used with the H5FD_MPIO
driver
(see
H5Pset_fapl_mpio
).
Limitations:
H5Fset_mpi_atomicity
calls
MPI_File_set_atomicity
underneath
and is not supported if the execution platform does not support
MPI_File_set_atomicity
.
When it is supported and used,
the performance of data access operations may drop significantly.
In certain scenarios, even when MPI_File_set_atomicity
is supported, setting atomicity with H5Fset_mpi_atomicity
and flag
set to TRUE
does not always yield
strictly atomic updates. For example, some H5Dwrite
calls
translate to multiple MPI_File_write_at
calls.
This happens in all cases where the high-level file access routine
translates to multiple lower level file access routines.
The following scenarios will raise this issue:
This issue arises because MPI atomicity is a matter of
MPI file access operations rather than HDF5 access operations.
But the user is normally seeking atomicity at the HDF5 level.
To accomplish this, the application must set a barrier
after a write, H5Dwrite
,
but before the next read, H5Dread
,
in addition to calling H5Fset_mpi_atomicity
.
The barrier will guarantee that all underlying write operations
execute atomically before the read operations starts.
This ensures additional ordering semantics and
will normally produce the desired behavior.
hid_t file_id ,
| IN: HDF5 file identifier | |
hbool_t flag
| IN: Logical flag for atomicity setting
Valid values are: TRUE
Sets MPI file access to atomic mode.
FALSE
Sets MPI file access to nonatomic mode.
|
SUBROUTINE h5fset_mpi_atomicity_f(file_id, flag, hdferr) IMPLICIT NONE INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier INTEGER(HBOOL_T), INTENT(IN) :: flag ! Atomicity flag INTEGER, INTENT(OUT) :: hdferr ! Error code ! 0 on success; -1 on failure END SUBROUTINE h5fset_mpi_atomicity_f
Release | Change |
1.8.9 | C function and Fortran subroutine introduced in this release. |