diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2007-12-06 19:24:30 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2007-12-06 19:24:30 (GMT) |
commit | 74c005fdb21644607cd93b3c2dd9098d9cc7e7c5 (patch) | |
tree | e1c2dc64d2fbf66c17e9c67a8cd41b1a81e83ffe /src/H5Dmpio.c | |
parent | 110a7d4869b546f5b73ba726f749870e7cd04674 (diff) | |
download | hdf5-74c005fdb21644607cd93b3c2dd9098d9cc7e7c5.zip hdf5-74c005fdb21644607cd93b3c2dd9098d9cc7e7c5.tar.gz hdf5-74c005fdb21644607cd93b3c2dd9098d9cc7e7c5.tar.bz2 |
[svn-r14326] Description:
- Keep skip list for tracking chunks with dataset (instead of creating/
destroying it for each I/O operation) and just delete the skip list
nodes.
- Avoid computations for normalizing selection offset when offset not set.
- Avoid updating object modification time twice during dataset creation.
- Avoid updating dataset layout message (and object modification time)
until dataset is closed.
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
Diffstat (limited to 'src/H5Dmpio.c')
-rw-r--r-- | src/H5Dmpio.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/H5Dmpio.c b/src/H5Dmpio.c index ccfaac9..22f32ab 100644 --- a/src/H5Dmpio.c +++ b/src/H5Dmpio.c @@ -550,7 +550,7 @@ H5D_mpio_get_min_chunk(const H5D_io_info_t *io_info, FUNC_ENTER_NOAPI_NOINIT(H5D_mpio_get_min_chunk); /* Get the number of chunks to perform I/O on */ - num_chunkf = H5SL_count(fm->fsel); + num_chunkf = H5SL_count(fm->sel_chunks); /* Determine the minimum # of chunks for all processes */ if (MPI_SUCCESS != (mpi_code = MPI_Allreduce(&num_chunkf, min_chunkf, 1, MPI_INT, MPI_MIN, io_info->comm))) @@ -586,7 +586,7 @@ H5D_mpio_get_sum_chunk(const H5D_io_info_t *io_info, /* Get the number of chunks to perform I/O on */ num_chunkf = 0; - ori_num_chunkf = H5SL_count(fm->fsel); + ori_num_chunkf = H5SL_count(fm->sel_chunks); H5_ASSIGN_OVERFLOW(num_chunkf,ori_num_chunkf,size_t,int); /* Determine the summation of number of chunks for all processes */ @@ -856,7 +856,7 @@ H5D_link_chunk_collective_io(H5D_io_info_t *io_info,H5D_chunk_map_t *fm,const vo H5D_chunk_info_t *chunk_info; H5D_storage_t store; - chunk_node = H5SL_first(fm->fsel); + chunk_node = H5SL_first(fm->sel_chunks); if(chunk_node == NULL) { if(H5D_istore_chunkmap(io_info, &chunk_base_addr, fm->down_chunks) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get chunk address"); @@ -884,7 +884,7 @@ H5D_link_chunk_collective_io(H5D_io_info_t *io_info,H5D_chunk_map_t *fm,const vo } /* Allocate chunking information */ - ori_num_chunk = H5SL_count(fm->fsel); + ori_num_chunk = H5SL_count(fm->sel_chunks); H5_ASSIGN_OVERFLOW(num_chunk,ori_num_chunk,size_t,int); #ifdef H5D_DEBUG @@ -1114,7 +1114,7 @@ H5D_multi_chunk_collective_io(H5D_io_info_t *io_info,H5D_chunk_map_t *fm,const v #endif select_chunk = fm->select_chunk[i]; if(select_chunk == 1){/* Have selection elements in this chunk. Find the chunk info. */ - if(NULL ==(chunk_node = H5SL_first(fm->fsel))) + if(NULL ==(chunk_node = H5SL_first(fm->sel_chunks))) HGOTO_ERROR(H5E_STORAGE, H5E_CANTGET, FAIL,"couldn't get chunk node from skipped list"); while(chunk_node){ @@ -1313,7 +1313,7 @@ H5D_multi_chunk_collective_io_no_opt(H5D_io_info_t *io_info,H5D_chunk_map_t *fm, count_chunk = 0; /* Get first node in chunk skip list */ - chunk_node=H5SL_first(fm->fsel); + chunk_node=H5SL_first(fm->sel_chunks); /* Iterate through chunks to be operated on */ while(chunk_node) { @@ -1618,7 +1618,7 @@ H5D_sort_chunk(H5D_io_info_t * io_info, FUNC_ENTER_NOAPI_NOINIT(H5D_sort_chunk) - num_chunks = H5SL_count(fm->fsel); + num_chunks = H5SL_count(fm->sel_chunks); #ifdef H5D_DEBUG if(H5DEBUG(D)) HDfprintf(H5DEBUG(D),"many_chunk_opt= %d\n",many_chunk_opt); @@ -1657,7 +1657,7 @@ H5D_sort_chunk(H5D_io_info_t * io_info, } /* end if */ /* Get first node in chunk skip list */ - if(NULL ==(chunk_node = H5SL_first(fm->fsel))) + if(NULL ==(chunk_node = H5SL_first(fm->sel_chunks))) HGOTO_ERROR(H5E_STORAGE, H5E_CANTGET, FAIL,"couldn't get chunk node from skipped list"); /* Set dataset storage for I/O info */ io_info->store = &store; @@ -1843,7 +1843,7 @@ H5D_obtain_mpio_mode(H5D_io_info_t* io_info, mem_cleanup = 1; - chunk_node = H5SL_first(fm->fsel); + chunk_node = H5SL_first(fm->sel_chunks); /*Obtain the regularity and selection information for all chunks in this process. */ while(chunk_node){ |