summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/H5Dmpio.c30
-rw-r--r--src/H5Dprivate.h4
2 files changed, 32 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
diff --git a/src/H5Dprivate.h b/src/H5Dprivate.h
index f1180a3..dcf3aa3 100644
--- a/src/H5Dprivate.h
+++ b/src/H5Dprivate.h
@@ -82,9 +82,13 @@
#define H5D_XFER_COLL_CHUNK_LINK_NUM_FALSE_NAME "coll_chunk_link_false"
#define H5D_XFER_COLL_CHUNK_MULTI_RATIO_COLL_NAME "coll_chunk_multi_coll"
#define H5D_XFER_COLL_CHUNK_MULTI_RATIO_IND_NAME "coll_chunk_multi_ind"
+#define H5D_XFER_COLL_CHUNK_LINK_TO_MULTI "coll_chunk_link_mul"/* Internal transferring from link to multiple chunk */
+#define H5D_XFER_COLL_CHUNK_LINK_TO_MULTI_OPT "coll_chunk_link_mul_opt"/* Internal transferring from link opt to multiple chunk opt*/
+
/* Definitions for all collective chunk instrumentation properties */
#define H5D_XFER_COLL_CHUNK_SIZE sizeof(unsigned)
#define H5D_XFER_COLL_CHUNK_DEF 1
+#define H5D_XFER_COLL_CHUNK_FIX 0
#endif /* H5_HAVE_INSTRUMENTED_LIBRARY */
/* Default temporary buffer size */