summaryrefslogtreecommitdiffstats
path: root/src/H5Dmpio.c
diff options
context:
space:
mode:
authorJordan Henderson <jhenderson@hdfgroup.org>2017-01-19 20:32:17 (GMT)
committerJordan Henderson <jhenderson@hdfgroup.org>2017-01-19 20:32:17 (GMT)
commit5426599c91d22028c1afd0200e6319cdc54ffe0c (patch)
tree3ab000935e7066b6ee00902cfc25bd567be64dfa /src/H5Dmpio.c
parent740e85a82dc01ce6ea62d86bef557e31012a0695 (diff)
downloadhdf5-5426599c91d22028c1afd0200e6319cdc54ffe0c.zip
hdf5-5426599c91d22028c1afd0200e6319cdc54ffe0c.tar.gz
hdf5-5426599c91d22028c1afd0200e6319cdc54ffe0c.tar.bz2
For sake of complexity, force multi chunk IO for parallel filtered read
Diffstat (limited to 'src/H5Dmpio.c')
-rw-r--r--src/H5Dmpio.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/H5Dmpio.c b/src/H5Dmpio.c
index 6d97cb1..f4b6c4a 100644
--- a/src/H5Dmpio.c
+++ b/src/H5Dmpio.c
@@ -817,8 +817,19 @@ H5D__chunk_collective_io(H5D_io_info_t *io_info, const H5D_type_info_t *type_inf
case H5D_ONE_LINK_CHUNK_IO:
case H5D_ONE_LINK_CHUNK_IO_MORE_OPT:
if(io_info->dset->shared->dcpl_cache.pline.nused > 0) {
- if(H5D__link_chunk_filtered_collective_io(io_info, type_info, fm, dx_plist) < 0)
- HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish filtered linked chunk MPI-IO")
+ if (io_info->op_type == H5D_IO_OP_READ) {
+ /* XXX: For now, Multi-chunk IO must be forced for parallel filtered read,
+ * so that data can be unfiltered as it is received. There is complexity
+ * in unfiltering the data when it is read all at once into a single
+ * buffer.
+ */
+ if(H5D__multi_chunk_filtered_collective_io(io_info, type_info, fm, dx_plist) < 0)
+ HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish optimized multiple filtered chunk MPI-IO")
+ }
+ else {
+ if(H5D__link_chunk_filtered_collective_io(io_info, type_info, fm, dx_plist) < 0)
+ HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL, "couldn't finish filtered linked chunk MPI-IO")
+ }
}
else {
if(H5D__link_chunk_collective_io(io_info, type_info, fm, sum_chunk, dx_plist) < 0)