Flush pending data to HDF5

ss_blob_flush is a function defined in ssblob.c.

Synopsis:

herr_t ss_blob_flush(ss_scope_t *topscope, ss_blob_t *blob, unsigned flags, ss_prop_t *props)

Formal Arguments:

  • topscope: Determines the file being flushed, and thus the collectivity of the function.
  • blob: Optional argument to restrict the flushing to a single dataset: the dataset to which blob refers, which might also be used by other blobs. If blob is not specified then all blob datasets for the file are flushed. When blob is defined on a subset of the FILE communicator, the tasks that don’t own the blob should pass a non-null object (passing the FILE argument a second time is recommended) in order to distinguish between this single-dataset case and the all-datasets case without the need for collective communication.
  • flags: Bit flags that describe how to flush the selected datasets. See ss_blob_async_flush for details. If none of the ``FLUSH`` or ``REAP`` bits are set then async two-phase I/O is started but nothing is reaped.
  • props: Flushing properties (none defined at this time).

Description: Because SSlib can perform asynchronous I/O, data transferred between memory and the HDF5 file can sit in SSlib queues after the call to ss_blob_read or ss_blob_write returns. This function causes those buffers to be flushed to HDF5 (but does not subsequently demand that HDF5 flush its buffers to the Unix file). The topscope and blob arguments indicates what should be flushed, and the flags and props arguments say how to flush it. In any case, all blob metadata for the file is synchronized.

Return Value: Returns non-negative on success; negative on failure.

Parallel Notes: File-collective. If the flush is occuring because a task (or tasks) wish to read data which was written asynchronously then the caller will be wise to also invoke MPI_Barrier to insure that this task’s read does not occur before the aggregator has a chance to write the previous data. The barrier call is not part of this routine because most uses of this routine are just to ensure that data has been (or very shortly will have been) written to the HDF5 file.

See Also: