summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/H5B.c6
-rw-r--r--src/H5F.c8
-rw-r--r--src/H5FDmpio.c59
-rw-r--r--src/H5FDmpio.h1
-rw-r--r--src/H5Gnode.c6
-rw-r--r--src/H5HL.c14
-rw-r--r--src/H5O.c16
7 files changed, 11 insertions, 99 deletions
diff --git a/src/H5B.c b/src/H5B.c
index 4db91b0..59068eb 100644
--- a/src/H5B.c
+++ b/src/H5B.c
@@ -101,8 +101,6 @@
#include "H5MMprivate.h" /*core memory management */
#include "H5Pprivate.h" /*property lists */
-#include "H5FDmpio.h" /*for H5FD_mpio_tas_allsame() */
-
#define PABLO_MASK H5B_mask
#define BOUND(MIN,X,MAX) ((X)<(MIN)?(MIN):((X)>(MAX)?(MAX):(X)))
@@ -527,10 +525,6 @@ H5B_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5B_t *bt)
* bother writing data for the child entries that don't exist or
* for the final unchanged children.
*/
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame(f->shared->lf, TRUE); /* only p0 will write */
-#endif /* H5_HAVE_PARALLEL */
if (H5F_block_write(f, H5FD_MEM_BTREE, addr, size, H5P_DATASET_XFER_DEFAULT, bt->page)<0) {
HRETURN_ERROR(H5E_BTREE, H5E_CANTFLUSH, FAIL,
"unable to save B-tree node to disk");
diff --git a/src/H5F.c b/src/H5F.c
index 84175af..35c9822 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -2419,19 +2419,11 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
} else {
/* Write superblock */
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame(f->shared->lf, TRUE); /*only p0 will write*/
-#endif
if (H5FD_write(f->shared->lf, H5FD_MEM_SUPER, H5P_DATASET_XFER_DEFAULT, f->shared->boot_addr, superblock_size, sbuf)<0)
HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "unable to write superblock");
/* Write driver information block */
if (HADDR_UNDEF!=f->shared->driver_addr) {
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame(f->shared->lf, TRUE); /*only p0 will write*/
-#endif
if (H5FD_write(f->shared->lf, H5FD_MEM_SUPER, H5P_DATASET_XFER_DEFAULT,
f->shared->base_addr+superblock_size, driver_size, dbuf)<0)
HRETURN_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "unable to write driver information block");
diff --git a/src/H5FDmpio.c b/src/H5FDmpio.c
index 0f1be8d..2d28828 100644
--- a/src/H5FDmpio.c
+++ b/src/H5FDmpio.c
@@ -55,7 +55,6 @@ typedef struct H5FD_mpio_t {
int mpi_rank; /* This process's rank */
int mpi_size; /* Total number of processes */
int mpi_round; /* Current round robin process (for metadata I/O) */
- hbool_t allsame; /*same data for all procs? */
haddr_t eof; /*end-of-file marker */
haddr_t eoa; /*end-of-address marker */
MPI_Datatype btype; /*buffer type for xfers */
@@ -421,48 +420,6 @@ H5Pget_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t *xfer_mode/*out*/)
/*-------------------------------------------------------------------------
- * Function: H5FD_mpio_tas_allsame
- *
- * Purpose: Test and set the allsame parameter.
- *
- * Return: Success: the old value of the allsame flag
- *
- * Failure: assert fails if access_parms is NULL.
- *
- * Programmer: rky 980828
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-htri_t
-H5FD_mpio_tas_allsame(H5FD_t *_file, hbool_t newval)
-{
- H5FD_mpio_t *file = (H5FD_mpio_t*)_file;
- hbool_t oldval;
-
- FUNC_ENTER(H5FD_mpio_tas_allsame, FAIL);
-
-#ifdef H5FDmpio_DEBUG
- if (H5FD_mpio_Debug[(int)'t'])
- fprintf(stdout, "Entering H5FD_mpio_tas_allsame, newval=%d\n", newval);
-#endif
-
- assert(file);
- assert(H5FD_MPIO==file->pub.driver_id);
- oldval = file->allsame;
- file->allsame = newval;
-
-#ifdef H5FDmpio_DEBUG
- if (H5FD_mpio_Debug[(int)'t'])
- fprintf(stdout, "Leaving H5FD_mpio_tas_allsame, oldval=%d\n", oldval);
-#endif
-
- FUNC_LEAVE(oldval);
-}
-
-
-/*-------------------------------------------------------------------------
* Function: H5FD_mpio_communicator
*
* Purpose: Returns the MPI communicator for the file.
@@ -1336,10 +1293,18 @@ H5FD_mpio_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t add
* Kim Yates, Pat Weidhaas, 2000-09-26
* Move block of coding where only p0 writes after the
* MPI_File_set_view call.
+ *
+ * Quincey Koziol, 2002-05-10
+ * Instead of always writing metadata from process 0, spread the
+ * burden among all the processes by using a round-robin rotation
+ * scheme.
+ *
+ * Quincey Koziol, 2002-05-10
+ * Removed allsame code, keying off the type parameter instead.
*-------------------------------------------------------------------------
*/
static herr_t
-H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t addr,
+H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
size_t size, const void *buf)
{
H5FD_mpio_t *file = (H5FD_mpio_t*)_file;
@@ -1350,7 +1315,6 @@ H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t ad
MPI_Datatype buf_type, file_type;
int size_i, bytes_written;
int use_types_this_time, used_types_last_time;
- hbool_t allsame;
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value=SUCCEED;
@@ -1436,8 +1400,7 @@ H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t ad
file->use_types = 0;
/* Only p<round> will do the actual write if all procs in comm write same data */
- allsame = H5FD_mpio_tas_allsame(_file, FALSE);
- if (allsame && H5_mpi_1_metawrite_g) {
+ if ((type!=H5FD_MEM_DRAW) && H5_mpi_1_metawrite_g) {
if (file->mpi_rank != file->mpi_round) {
#ifdef H5FDmpio_DEBUG
if (H5FD_mpio_Debug[(int)'w']) {
@@ -1504,7 +1467,7 @@ H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t ad
done:
/* if only p<round> writes, need to broadcast the ret_value to other processes */
- if (allsame && H5_mpi_1_metawrite_g) {
+ if ((type!=H5FD_MEM_DRAW) && H5_mpi_1_metawrite_g) {
if (MPI_SUCCESS !=
MPI_Bcast(&ret_value, sizeof(ret_value), MPI_BYTE, file->mpi_round, file->comm))
HRETURN_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Bcast failed");
diff --git a/src/H5FDmpio.h b/src/H5FDmpio.h
index 86ba0f7..08dd857 100644
--- a/src/H5FDmpio.h
+++ b/src/H5FDmpio.h
@@ -56,7 +56,6 @@ __DLL__ herr_t H5Pget_fapl_mpio(hid_t fapl_id, MPI_Comm *comm/*out*/,
MPI_Info *info/*out*/);
__DLL__ herr_t H5Pset_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t xfer_mode);
__DLL__ herr_t H5Pget_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t *xfer_mode/*out*/);
-__DLL__ htri_t H5FD_mpio_tas_allsame(H5FD_t *_file, hbool_t newval);
__DLL__ MPI_Comm H5FD_mpio_communicator(H5FD_t *_file);
__DLL__ herr_t H5FD_mpio_setup(H5FD_t *_file, MPI_Datatype btype, MPI_Datatype ftype,
haddr_t disp, hbool_t use_types);
diff --git a/src/H5Gnode.c b/src/H5Gnode.c
index d830a6b..1c34703 100644
--- a/src/H5Gnode.c
+++ b/src/H5Gnode.c
@@ -35,8 +35,6 @@
#include "H5Oprivate.h" /*header messages */
#include "H5Pprivate.h" /*property lists */
-#include "H5FDmpio.h" /*the MPIO file driver */
-
#define PABLO_MASK H5G_node_mask
/* PRIVATE PROTOTYPES */
@@ -367,10 +365,6 @@ H5G_node_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5G_node_t *sym)
H5G_ent_encode_vec(f, &p, sym->entry, sym->nsyms);
HDmemset(p, 0, size - (p - buf));
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame(f->shared->lf, TRUE); /*only p0 will write*/
-#endif /* H5_HAVE_PARALLEL */
status = H5F_block_write(f, H5FD_MEM_BTREE, addr, size, H5P_DATASET_XFER_DEFAULT, buf);
if (status < 0)
HRETURN_ERROR(H5E_SYM, H5E_WRITEERROR, FAIL,
diff --git a/src/H5HL.c b/src/H5HL.c
index 4e2591b..ed83090 100644
--- a/src/H5HL.c
+++ b/src/H5HL.c
@@ -30,8 +30,6 @@
#include "H5MMprivate.h" /*core memory management */
#include "H5Pprivate.h" /*property lists */
-#include "H5FDmpio.h" /*for H5FD_mpio_tas_allsame() */
-
#define H5HL_FREE_NULL 1 /*end of free list on disk */
#define PABLO_MASK H5HL_mask
@@ -394,10 +392,6 @@ H5HL_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5HL_t *heap)
hdr_end_addr = addr + (hsize_t)H5HL_SIZEOF_HDR(f);
if (H5F_addr_eq(heap->addr, hdr_end_addr)) {
/* The header and data are contiguous */
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */
-#endif /* H5_HAVE_PARALLEL */
if (H5F_block_write(f, H5FD_MEM_LHEAP, addr,
(H5HL_SIZEOF_HDR(f)+heap->disk_alloc),
H5P_DATASET_XFER_DEFAULT, heap->chunk) < 0) {
@@ -405,19 +399,11 @@ H5HL_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5HL_t *heap)
"unable to write heap header and data to file");
}
} else {
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */
-#endif /* H5_HAVE_PARALLEL */
if (H5F_block_write(f, H5FD_MEM_LHEAP, addr, H5HL_SIZEOF_HDR(f),
H5P_DATASET_XFER_DEFAULT, heap->chunk)<0) {
HRETURN_ERROR(H5E_HEAP, H5E_WRITEERROR, FAIL,
"unable to write heap header to file");
}
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame( f->shared->lf, TRUE ); /* only p0 writes */
-#endif /* H5_HAVE_PARALLEL */
if (H5F_block_write(f, H5FD_MEM_LHEAP, heap->addr, heap->disk_alloc,
H5P_DATASET_XFER_DEFAULT,
heap->chunk + H5HL_SIZEOF_HDR(f)) < 0) {
diff --git a/src/H5O.c b/src/H5O.c
index 3e038bc..1dd1d8a 100644
--- a/src/H5O.c
+++ b/src/H5O.c
@@ -27,10 +27,6 @@
#include "H5Oprivate.h"
#include "H5Pprivate.h"
-/* The MPIO driver for H5FD_mpio_tas_allsame() */
-#include "H5FDmpio.h"
-
-
#define PABLO_MASK H5O_mask
/* PRIVATE PROTOTYPES */
@@ -589,10 +585,6 @@ H5O_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5O_t *oh)
combine=1;
} /* end if */
else {
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame(f->shared->lf, TRUE); /*only p0 will write*/
-#endif /* H5_HAVE_PARALLEL */
if (H5F_block_write(f, H5FD_MEM_OHDR, addr, H5O_SIZEOF_HDR(f),
H5P_DATASET_XFER_DEFAULT, buf) < 0) {
HRETURN_ERROR(H5E_OHDR, H5E_WRITEERROR, FAIL,
@@ -675,10 +667,6 @@ H5O_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5O_t *oh)
HDmemcpy(p+H5O_SIZEOF_HDR(f),oh->chunk[u].image,oh->chunk[u].size);
/* Write the combined prefix/chunk out */
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame(f->shared->lf, TRUE); /*only p0 write*/
-#endif /* H5_HAVE_PARALLEL */
if (H5F_block_write(f, H5FD_MEM_OHDR, addr,
(H5O_SIZEOF_HDR(f)+oh->chunk[u].size),
H5P_DATASET_XFER_DEFAULT, p) < 0) {
@@ -690,10 +678,6 @@ H5O_flush(H5F_t *f, hbool_t destroy, haddr_t addr, H5O_t *oh)
p = H5FL_BLK_FREE(chunk_image,p);
} /* end if */
else {
-#ifdef H5_HAVE_PARALLEL
- if (IS_H5FD_MPIO(f))
- H5FD_mpio_tas_allsame(f->shared->lf, TRUE); /*only p0 write*/
-#endif /* H5_HAVE_PARALLEL */
if (H5F_block_write(f, H5FD_MEM_OHDR, oh->chunk[u].addr,
(oh->chunk[u].size),
H5P_DATASET_XFER_DEFAULT, oh->chunk[u].image) < 0) {