diff options
author | Robert Kim Yates <rkyates@llnl.gov> | 1998-08-28 23:37:58 (GMT) |
---|---|---|
committer | Robert Kim Yates <rkyates@llnl.gov> | 1998-08-28 23:37:58 (GMT) |
commit | 1373661a78b7a6d3c7526cd8f80b9ba3460a1d74 (patch) | |
tree | 83bd2e2ef70d44c57fa8fd53453aea99067ab10a /src/H5HL.c | |
parent | 96c2b5fec405a2dd4a63b7482a431dfc984523df (diff) | |
download | hdf5-1373661a78b7a6d3c7526cd8f80b9ba3460a1d74.zip hdf5-1373661a78b7a6d3c7526cd8f80b9ba3460a1d74.tar.gz hdf5-1373661a78b7a6d3c7526cd8f80b9ba3460a1d74.tar.bz2 |
[svn-r630] Added code to eliminate redundant writes of metadata,
so only proc 0 writes it to disk. The elimination is activated
only when the environment variable HDF5_MPI_1_METAWRITE is nonzero;
otherwise all processes that opened the file will write the metadata to disk.
Diffstat (limited to 'src/H5HL.c')
-rw-r--r-- | src/H5HL.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -305,6 +305,7 @@ H5HL_load(H5F_t *f, const haddr_t *addr, const void __unused__ *udata1, * Jul 17 1997 * * Modifications: + * rky 980828 Only p0 writes metadata to disk. * *------------------------------------------------------------------------- */ @@ -376,6 +377,9 @@ H5HL_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5HL_t *heap) H5F_addr_inc(&hdr_end_addr, (hsize_t)H5HL_SIZEOF_HDR(f)); if (H5F_addr_eq(&(heap->addr), &hdr_end_addr)) { /* The header and data are contiguous */ +#ifdef HAVE_PARALLEL + H5F_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */ +#endif /* HAVE_PARALLEL */ if (H5F_block_write(f, addr, (hsize_t)(H5HL_SIZEOF_HDR(f)+heap->disk_alloc), H5D_XFER_DFLT, heap->chunk) < 0) { @@ -383,11 +387,17 @@ H5HL_flush(H5F_t *f, hbool_t destroy, const haddr_t *addr, H5HL_t *heap) "unable to write heap header and data to file"); } } else { +#ifdef HAVE_PARALLEL + H5F_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */ +#endif /* HAVE_PARALLEL */ if (H5F_block_write(f, addr, (hsize_t)H5HL_SIZEOF_HDR(f), H5D_XFER_DFLT, heap->chunk)<0) { HRETURN_ERROR(H5E_HEAP, H5E_WRITEERROR, FAIL, "unable to write heap header to file"); } +#ifdef HAVE_PARALLEL + H5F_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */ +#endif /* HAVE_PARALLEL */ if (H5F_block_write(f, &(heap->addr), (hsize_t)(heap->disk_alloc), H5D_XFER_DFLT, heap->chunk + H5HL_SIZEOF_HDR(f)) < 0) { |