From 1e7b213aa26cd2b7c2b23891c2759b2e60166d70 Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Tue, 28 Oct 2003 09:40:15 -0500 Subject: [svn-r7764] Purpose: Bug fix Description: Code was using an internal DXPL with collective I/O turned on during independent I/O operations to fill dataset on disk. Solution: Switched to internal DXPL with independent I/O Platforms tested: FreeBSD 4.9 (sleipnir) FreeBSD 4.9 (sleipnir) w/parallel Linux 2.4 (verbena) w/fortran & C++ Solaris 2.7 (arabica) w/64-bit extensions enabled --- src/H5Dcontig.c | 5 +++-- src/H5Distore.c | 5 +++-- src/H5Fcontig.c | 5 +++-- src/H5Fistore.c | 5 +++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/H5Dcontig.c b/src/H5Dcontig.c index 7867be7..f47f725 100644 --- a/src/H5Dcontig.c +++ b/src/H5Dcontig.c @@ -264,9 +264,10 @@ H5F_contig_fill(H5F_t *f, hid_t dxpl_id, struct H5O_layout_t *layout, #ifdef H5_HAVE_PARALLEL /* Check if this file is accessed with an MPI-capable file driver */ if(using_mpi) { - /* Round-robin write the chunks out from only one process */ + /* Write the chunks out from only one process */ + /* !! Use the internal "independent" DXPL!! -QAK */ if(H5_PAR_META_WRITE==mpi_rank) { - if (H5F_contig_write(f, (hsize_t)size, addr, size, dxpl_id, buf)<0) + if (H5F_contig_write(f, (hsize_t)size, addr, size, H5AC_ind_dxpl_id, buf)<0) HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to write fill value to dataset"); } /* end if */ diff --git a/src/H5Distore.c b/src/H5Distore.c index 828a971..93c25e4 100644 --- a/src/H5Distore.c +++ b/src/H5Distore.c @@ -2353,9 +2353,10 @@ H5F_istore_allocate(H5F_t *f, hid_t dxpl_id, const H5O_layout_t *layout, #ifdef H5_HAVE_PARALLEL /* Check if this file is accessed with an MPI-capable file driver */ if(using_mpi) { - /* Round-robin write the chunks out from only one process */ + /* Write the chunks out from only one process */ + /* !! Use the internal "independent" DXPL!! -QAK */ if(H5_PAR_META_WRITE==mpi_rank) { - if (H5F_block_write(f, H5FD_MEM_DRAW, udata.addr, udata.key.nbytes, dxpl_id, chunk)<0) + if (H5F_block_write(f, H5FD_MEM_DRAW, udata.addr, udata.key.nbytes, H5AC_ind_dxpl_id, chunk)<0) HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "unable to write raw data to file"); } /* end if */ diff --git a/src/H5Fcontig.c b/src/H5Fcontig.c index 7867be7..f47f725 100644 --- a/src/H5Fcontig.c +++ b/src/H5Fcontig.c @@ -264,9 +264,10 @@ H5F_contig_fill(H5F_t *f, hid_t dxpl_id, struct H5O_layout_t *layout, #ifdef H5_HAVE_PARALLEL /* Check if this file is accessed with an MPI-capable file driver */ if(using_mpi) { - /* Round-robin write the chunks out from only one process */ + /* Write the chunks out from only one process */ + /* !! Use the internal "independent" DXPL!! -QAK */ if(H5_PAR_META_WRITE==mpi_rank) { - if (H5F_contig_write(f, (hsize_t)size, addr, size, dxpl_id, buf)<0) + if (H5F_contig_write(f, (hsize_t)size, addr, size, H5AC_ind_dxpl_id, buf)<0) HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to write fill value to dataset"); } /* end if */ diff --git a/src/H5Fistore.c b/src/H5Fistore.c index 828a971..93c25e4 100644 --- a/src/H5Fistore.c +++ b/src/H5Fistore.c @@ -2353,9 +2353,10 @@ H5F_istore_allocate(H5F_t *f, hid_t dxpl_id, const H5O_layout_t *layout, #ifdef H5_HAVE_PARALLEL /* Check if this file is accessed with an MPI-capable file driver */ if(using_mpi) { - /* Round-robin write the chunks out from only one process */ + /* Write the chunks out from only one process */ + /* !! Use the internal "independent" DXPL!! -QAK */ if(H5_PAR_META_WRITE==mpi_rank) { - if (H5F_block_write(f, H5FD_MEM_DRAW, udata.addr, udata.key.nbytes, dxpl_id, chunk)<0) + if (H5F_block_write(f, H5FD_MEM_DRAW, udata.addr, udata.key.nbytes, H5AC_ind_dxpl_id, chunk)<0) HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "unable to write raw data to file"); } /* end if */ -- cgit v0.12