summaryrefslogtreecommitdiffstats
path: root/src/H5Dmpio.c
diff options
context:
space:
mode:
authorMuQun Yang <myang6@hdfgroup.org>2008-09-16 15:03:21 (GMT)
committerMuQun Yang <myang6@hdfgroup.org>2008-09-16 15:03:21 (GMT)
commite7ff2aafa5c5dd8203f472a7703bd41bb7238420 (patch)
treef79f0d90a9bee6f3da00a1f4c1142c7c0d93d967 /src/H5Dmpio.c
parent876844988ac222436f3767ee79f07390e4f7ea3c (diff)
downloadhdf5-e7ff2aafa5c5dd8203f472a7703bd41bb7238420.zip
hdf5-e7ff2aafa5c5dd8203f472a7703bd41bb7238420.tar.gz
hdf5-e7ff2aafa5c5dd8203f472a7703bd41bb7238420.tar.bz2
[svn-r15626] This check-in fixes a bug inside parallel HDF5 testsuite.
When enable-debug is turned on, a special macro block H5_HAVE_INSTRUMENTED_LIBRARY inside HDF5 will be executed to check if some collective chunk IO test cases are being run with the correct settings(one link, multiple chunk etc.). However,when complicated derived datatype in some mpi-io packages are not supported, the library has to switch one link IO with/without the optimization to multiple chunk IO with/without the optimization. The current testsuite doesn't know this and generates a false assertion failure message. This check-in fix this problem by providing a second property to avoid the false faiure message. Tested at abe(NCSA linux cluster) and kagiso.
Diffstat (limited to 'src/H5Dmpio.c')
-rw-r--r--src/H5Dmpio.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/H5Dmpio.c b/src/H5Dmpio.c
index a87c9d3..868fbe0 100644
--- a/src/H5Dmpio.c
+++ b/src/H5Dmpio.c
@@ -637,10 +637,36 @@ H5D_chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_info
} /* end else */
#ifndef H5_MPI_COMPLEX_DERIVED_DATATYPE_WORKS
- if(io_option == H5D_ONE_LINK_CHUNK_IO)
+ if(io_option == H5D_ONE_LINK_CHUNK_IO) {
io_option = H5D_MULTI_CHUNK_IO; /* We can not do this with one chunk IO. */
- if(io_option == H5D_ONE_LINK_CHUNK_IO_MORE_OPT)
+#ifdef H5_HAVE_INSTRUMENTED_LIBRARY
+ { int new_value;
+ htri_t check_prop;
+ check_prop = H5Pexist(io_info->dxpl_id, H5D_XFER_COLL_CHUNK_LINK_TO_MULTI);
+ if(check_prop > 0) {
+ new_value = 1;
+ if(H5Pset(io_info->dxpl_id, H5D_XFER_COLL_CHUNK_LINK_TO_MULTI, &new_value) < 0)
+ HGOTO_ERROR(H5E_IO, H5E_CANTSET, FAIL, "unable to set property value")
+
+ }
+ }/* add this property because the library changes the option from one link to multiple chunks.*/
+#endif
+ }
+ if(io_option == H5D_ONE_LINK_CHUNK_IO_MORE_OPT){
io_option = H5D_MULTI_CHUNK_IO_MORE_OPT;
+#ifdef H5_HAVE_INSTRUMENTED_LIBRARY
+ { int new_value;
+ htri_t check_prop;
+ check_prop = H5Pexist(io_info->dxpl_id, H5D_XFER_COLL_CHUNK_LINK_TO_MULTI_OPT);
+ if(check_prop > 0) {
+ new_value = 1;
+ if(H5Pset(io_info->dxpl_id, H5D_XFER_COLL_CHUNK_LINK_TO_MULTI_OPT, &new_value) < 0)
+ HGOTO_ERROR(H5E_IO, H5E_CANTSET, FAIL, "unable to set property value")
+
+ }
+ }/* add this property because the library changes the option from one link to multiple chunks.*/
+#endif
+ }
#endif
#ifdef H5_HAVE_INSTRUMENTED_LIBRARY