summaryrefslogtreecommitdiffstats
path: root/src/H5Ppublic.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2011-10-01 01:37:23 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2011-10-01 01:37:23 (GMT)
commit3d15d9d6814b700bb19b2cd18bb934be00c259dc (patch)
tree21463fe77c01e88d0a293de4777fbee11775e8ea /src/H5Ppublic.h
parent8f6ec57f06a1b451bb55ecda5c5e72527832322e (diff)
downloadhdf5-3d15d9d6814b700bb19b2cd18bb934be00c259dc.zip
hdf5-3d15d9d6814b700bb19b2cd18bb934be00c259dc.tar.gz
hdf5-3d15d9d6814b700bb19b2cd18bb934be00c259dc.tar.bz2
[svn-r21442] Description:
Check in "actual I/O mode" feature to trunk. Will merge back to 1.8 branch after it bakes over the weekend. Tested on: FreeBSD/32 8.2 (loyalty) w/gcc4.6, w/C++ & FORTRAN, in debug mode FreeBSD/64 8.2 (freedom) w/gcc4.6, w/C++ & FORTRAN, in debug mode Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (koala) w/Intel compilers, w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, w/threadsafe, in production mode Linux/PPC 2.6 (heiwa) w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-ia64 2.6 (ember) w/Intel compilers, w/C++ & FORTRAN, in production mode Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in debug mode Mac OS X/32 10.6.8 (amazon) in debug mode Mac OS X/32 10.6.8 (amazon) w/C++ & FORTRAN, w/threadsafe, in production mode
Diffstat (limited to 'src/H5Ppublic.h')
-rw-r--r--src/H5Ppublic.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h
index 80c028a..492a468 100644
--- a/src/H5Ppublic.h
+++ b/src/H5Ppublic.h
@@ -120,6 +120,38 @@ typedef H5P_prp_cb1_t H5P_prp_close_func_t;
/* Define property list iteration function type */
typedef herr_t (*H5P_iterate_t)(hid_t id, const char *name, void *iter_data);
+/* Actual IO mode property */
+typedef enum H5D_mpio_actual_chunk_opt_mode_t {
+ /* The default value, H5D_MPIO_NO_CHUNK_OPTIMIZATION, is used for all I/O
+ * operations that do not use chunk optimizations, including non-collective
+ * I/O and contiguous collective I/O.
+ */
+ H5D_MPIO_NO_CHUNK_OPTIMIZATION = 0,
+ H5D_MPIO_LINK_CHUNK,
+ H5D_MPIO_MULTI_CHUNK,
+ H5D_MPIO_MULTI_CHUNK_NO_OPT
+} H5D_mpio_actual_chunk_opt_mode_t;
+
+typedef enum H5D_mpio_actual_io_mode_t {
+ /* The following four values are conveniently defined as a bit field so that
+ * we can switch from the default to indpendent or collective and then to
+ * mixed without having to check the original value.
+ *
+ * NO_COLLECTIVE means that either collective I/O wasn't requested or that
+ * no I/O took place.
+ *
+ * CHUNK_INDEPENDENT means that collective I/O was requested, but the
+ * chunk optimization scheme chose independent I/O for each chunk.
+ */
+ H5D_MPIO_NO_COLLECTIVE = 0x0,
+ H5D_MPIO_CHUNK_INDEPENDENT = 0x1,
+ H5D_MPIO_CHUNK_COLLECTIVE = 0x2,
+ H5D_MPIO_CHUNK_MIXED = 0x1 | 0x2,
+
+ /* The contiguous case is separate from the bit field. */
+ H5D_MPIO_CONTIGUOUS_COLLECTIVE = 0x4
+} H5D_mpio_actual_io_mode_t;
+
/********************/
/* Public Variables */
/********************/
@@ -359,6 +391,10 @@ H5_DLL herr_t H5Pset_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t op, void
H5_DLL herr_t H5Pget_type_conv_cb(hid_t dxpl_id, H5T_conv_except_func_t *op, void** operate_data);
H5_DLL herr_t H5Pset_enum_conv_overflow(hid_t plist_id, hbool_t conv_overflow);
H5_DLL herr_t H5Pget_enum_conv_overflow(hid_t plist_id, hbool_t *conv_overflow/*out*/);
+#ifdef H5_HAVE_PARALLEL
+H5_DLL herr_t H5Pget_mpio_actual_chunk_opt_mode(hid_t plist_id, H5D_mpio_actual_chunk_opt_mode_t *actual_chunk_opt_mode);
+H5_DLL herr_t H5Pget_mpio_actual_io_mode(hid_t plist_id, H5D_mpio_actual_io_mode_t *actual_io_mode);
+#endif /* H5_HAVE_PARALLEL */
/* Link creation property list (LCPL) routines */
H5_DLL herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd);