summaryrefslogtreecommitdiffstats
path: root/src/H5Dselect.c
diff options
context:
space:
mode:
authorMuQun Yang <ymuqun@hdfgroup.org>2006-02-16 17:08:34 (GMT)
committerMuQun Yang <ymuqun@hdfgroup.org>2006-02-16 17:08:34 (GMT)
commit0fe91bb1a28ccfea8e67e3834155811d27446391 (patch)
tree766c1ccc8152f06eada9bd6fd875b697db40c38a /src/H5Dselect.c
parent2a4cd8949e9d7a3a12bacf2bed1e5143a7d03791 (diff)
downloadhdf5-0fe91bb1a28ccfea8e67e3834155811d27446391.zip
hdf5-0fe91bb1a28ccfea8e67e3834155811d27446391.tar.gz
hdf5-0fe91bb1a28ccfea8e67e3834155811d27446391.tar.bz2
[svn-r11950] Purpose:
Enhanced collective chunk IO supports Description: 1. When using collective IO with chunking storage without any tuning, performance may become worse under some circumstances. 2. Current HDF5 handles raw-data IO per chunk. So for many small chunks, many small IOs will be passed into MPI-IO. That may cause bad performance. 3. For one IO per chunk case, sometimes performance with collective is worse than performance with independent. An obvious case is when only one process is doing IO and all other process are not doing IO, the collective IO will only add overheads for communication. We want to avoid this case. Some management inside our library needs to be done. Solution: - Added managements of collective IO supports for chunking storage inside parallel HDF5 1) Implemented One IO with collective mode for all chunks in the application by building one MPI derived datatype accross all chunks. 2) Implemented the decision-making support to do collective IO inside MPI-IO per chunk. 3) Added the decision-making support to do one IO accross all chunks or to do multiple IOs with each IO per chunk. 4) Added the support to handle the case some processes won't do any IOs in collectively. 5) Some MPI-IO package(mpich 1.2.6 or lower, e.g.) cannot handle collective IO correctly for the case when some processes have no contributions to IOs, a special macro is added to change collective IO mode to independent IO mode inside HDF5 library. Platforms tested: Parallel: IBM AIX 5.2(copper) Linux (heping) mpich-1.2.6 SDSC Teragrid mpich-1.2.5 Linux(Tungsten) mpich-1.2.6 Altix(NCSA cobalt) Seq: Linux(heping) Misc. update:
Diffstat (limited to 'src/H5Dselect.c')
-rw-r--r--src/H5Dselect.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/H5Dselect.c b/src/H5Dselect.c
index 9f98d9e..df9d32f 100644
--- a/src/H5Dselect.c
+++ b/src/H5Dselect.c
@@ -432,6 +432,7 @@ herr_t
H5D_select_read(H5D_io_info_t *io_info,
size_t nelmts, size_t elmt_size,
const H5S_t *file_space, const H5S_t *mem_space,
+ const haddr_t UNUSED addr,
void *buf/*out*/)
{
H5S_sel_iter_t mem_iter; /* Memory selection iteration info */
@@ -575,6 +576,7 @@ herr_t
H5D_select_write(H5D_io_info_t *io_info,
size_t nelmts, size_t elmt_size,
const H5S_t *file_space, const H5S_t *mem_space,
+ const haddr_t UNUSED addr,
const void *buf/*out*/)
{
H5S_sel_iter_t mem_iter; /* Memory selection iteration info */