Page tree









Retrieves local and global causes that broke collective I/O on the last parallel I/O call


H5P_GET_MPIO_NO_COLLECTIVE_CAUSE( dxpl_id, local_no_collective_cause, global_no_collective_cause )


herr_t H5Pget_mpio_no_collective_cause(
            hid_t dxpl_id,
            uint32_t * local_no_collective_cause,
            uint32_t * global_no_collective_cause)


hid_t dxpl_idIN: Dataset transfer property list identifier
uint32_t *local_no_collective_causeOUT: An enumerated set value indicating the causes that prevented collective I/O in the local process
uint32_t *global_no_collective_causeOUT: An enumerated set value indicating the causes across all processes that prevented collective I/O


A user can request collective I/O via a data transfer property list (DXPL) that has been suitably modified with H5P_SET_DXPL_MPIO. However, there are conditions that can cause HDF5 to forgo collective I/O and perform independent I/O. Such causes can be different across the processes of a parallel application. This function allows the user to determine what caused the HDF5 library to skip collective I/O locally, that is in the local process, and globally, across all processes.


H5P_GET_MPIO_NO_COLLECTIVE_CAUSE serves two purposes. It can be used to determine whether collective I/O was used for the last preceding parallel I/O call. If collective I/O was not used, the function retrieves the local and global causes that broke collective I/O on that parallel I/O call. The properties retrieved by this function are set before I/O takes place and are retained even when I/O fails.

Valid values returned in local_no_collective_cause and global_no_collective_cause are as follows or, if there are multiple causes, a bitwise OR of the relevant causes; the numbers in the center column are the bitmask values:

H5D_MPIO_COLLECTIVE00000000Collective I/O was performed successfully (Default)
H5D_MPIO_SET_INDEPENDENT00000001Collective I/O was not performed because independent I/O was requested
H5D_MPIO_DATATYPE_CONVERSION    00000010Collective I/O was not performed because datatype conversions were required
H5D_MPIO_DATA_TRANSFORMS00000100Collective I/O was not performed because data transforms needed to be applied
H5D_MPIO_SET_MPIPOSIX00001000Collective I/O was not performed because the selected file driver was MPI-POSIX
 H5D_MPIO_NOT_SIMPLE_OR_SCALAR_DATASPACES00010000Collective I/O was not performed because one of the dataspaces was neither simple nor scalar
H5D_MPIO_POINT_SELECTIONS00100000Collective I/O was not performed because there were point selections in one of the dataspaces
 H5D_MPIO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET01000000Collective I/O was not performed because the dataset was neither contiguous nor chunked
H5D_MPIO_FILTERS10000000Collective I/O was not performed because filters needed to be applied

The above name/value pairs are members of HDF5’s H5D_mpio_no_collective_cause_t enumeration.

Each process determines whether it can perform collective I/O and broadcasts the result. Those results are combined to make a collective decision; collective I/O will be performed only if all processes can perform collective I/O.

If collective I/O was not used, the causes that prevented it are reported by individual process by means of an enumerated set. The causes may differ among processes, so H5P_GET_MPIO_NO_COLLECTIVE_CAUSE returns two property values. The first value is the one produced by the local process to report local causes. This local information is encoded in an enumeration, the H5D_mpio_no_collective_cause_t described above, with all individual causes combined into a single enumeration value by means of a bitwise OR operation. The second value reports global causes; this global value is the result of a bitwise-OR operation across the values returned by all the processes.



Returns a non-negative value if successful; otherwise returns a negative value.


Coming Soon!

Release    Change
1.8.10C function introduced in this release.

--- Last Modified: January 04, 2018 | 01:35 PM