diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2002-06-07 03:34:21 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2002-06-07 03:34:21 (GMT) |
commit | 35c3c893e84d4a210b4c993ee92b582d07e63109 (patch) | |
tree | 2381a6c92d88376f1f4877e67ca95964022e8b96 /src/H5FDmpio.c | |
parent | 01f102c2d49d6f25a6bbdaeb874e51e764d7df72 (diff) | |
download | hdf5-35c3c893e84d4a210b4c993ee92b582d07e63109.zip hdf5-35c3c893e84d4a210b4c993ee92b582d07e63109.tar.gz hdf5-35c3c893e84d4a210b4c993ee92b582d07e63109.tar.bz2 |
[svn-r5550] Purpose:
Code Improvement
Description:
Split the metadata accumulator code into two parts: one for allowing writes
of the accumulator buffer during reads (when the buffer is dirty and needs
to be flushed to disk in order to hold the new metadata being read in) and
another for only allowing writes of the buffer during writes.
This allows the MPI-I/O VFL driver to use the metadata accumulator (but
only during writes) and benefit from the reduced number of metadata I/O
operations that it brings.
Platforms tested:
IRIX64 6.5 (modi4) w/parallel
Diffstat (limited to 'src/H5FDmpio.c')
-rw-r--r-- | src/H5FDmpio.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/H5FDmpio.c b/src/H5FDmpio.c index 0ec8db3..2d81469 100644 --- a/src/H5FDmpio.c +++ b/src/H5FDmpio.c @@ -944,6 +944,15 @@ H5FD_mpio_query(const H5FD_t *_file, unsigned long *flags /* out */) if(flags) { *flags=0; *flags|=H5FD_FEAT_AGGREGATE_METADATA; /* OK to aggregate metadata allocations */ + + /* Distinguish between updating the metadata accumulator on writes and + * reads. This is particularly (perhaps only, even) important for MPI-I/O + * where we guarantee that writes are collective, but reads may not be. + * If we were to allow the metadata accumulator to be written during a + * read operation, the application would hang. + */ + *flags|=H5FD_FEAT_ACCUMULATE_METADATA_WRITE; /* OK to accumulate metadata for faster writes */ + *flags|=H5FD_FEAT_AGGREGATE_SMALLDATA; /* OK to aggregate "small" raw data allocations */ } /* end if */ |