diff options
author | Jordan Henderson <jhenderson@hdfgroup.org> | 2017-01-19 20:32:17 (GMT) |
---|---|---|
committer | Jordan Henderson <jhenderson@hdfgroup.org> | 2017-01-19 20:32:17 (GMT) |
commit | 5426599c91d22028c1afd0200e6319cdc54ffe0c (patch) | |
tree | 3ab000935e7066b6ee00902cfc25bd567be64dfa /src/H5Dmpio.c | |
parent | 740e85a82dc01ce6ea62d86bef557e31012a0695 (diff) | |
download | hdf5-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.c | 15 |
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) |