summaryrefslogtreecommitdiffstats
path: root/src/H5Vprivate.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2003-05-07 21:52:24 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2003-05-07 21:52:24 (GMT)
commit43e3b450214310728cbb6904211319a8459f06e4 (patch)
tree13cc61b9f713aa60fdcaf606665f03189689046d /src/H5Vprivate.h
parentdb543f1a23194e81d0a984c346398e72bf4be87f (diff)
downloadhdf5-43e3b450214310728cbb6904211319a8459f06e4.zip
hdf5-43e3b450214310728cbb6904211319a8459f06e4.tar.gz
hdf5-43e3b450214310728cbb6904211319a8459f06e4.tar.bz2
[svn-r6825] Purpose:
New feature/enhancement Description: Chunked datasets are handled poorly in several circumstances involving certain selections and chunks that are too large for the chunk cache and/or chunks with filters, causing the chunk to be read from disk multiple times. Solution: Rearrange raw data I/O infrastructure to handle chunked datasets in a much more friendly way by creating a selection in memory and on disk for each chunk in a chunked dataset and performing all of the I/O on that chunk at one time. There are still some scalability (the current code attempts to create a selection for all the chunks in the dataset, instead of just the chunks that are accessed, requiring portions of the istore.c and fillval.c tests to be commented out) and performance issues, but checking this in will allow the changes to be tested by a much wider audience while I address the remaining issues. Platforms tested: h5committested, FreeBSD 4.8 (sleipnir) serial & parallel, Linux 2.4 (eirene)
Diffstat (limited to 'src/H5Vprivate.h')
-rw-r--r--src/H5Vprivate.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/H5Vprivate.h b/src/H5Vprivate.h
index a6f67ba..3840075 100644
--- a/src/H5Vprivate.h
+++ b/src/H5Vprivate.h
@@ -83,8 +83,21 @@ H5_DLL herr_t H5V_stride_optimize2(unsigned *np, hsize_t *elmt_size,
hssize_t *stride2);
H5_DLL herr_t H5V_array_fill(void *_dst, const void *src, size_t size,
size_t count);
+H5_DLL herr_t H5V_array_down(unsigned n, const hsize_t *total_size,
+ hsize_t *down);
+H5_DLL hsize_t H5V_array_offset_pre(unsigned n, const hsize_t *total_size,
+ const hsize_t *acc, const hssize_t *offset);
H5_DLL hsize_t H5V_array_offset(unsigned n, const hsize_t *total_size,
- const hssize_t *offset);
+ const hssize_t *offset);
+H5_DLL herr_t H5V_array_calc(hsize_t offset, unsigned n,
+ const hsize_t *total_size, hssize_t *coords);
+H5_DLL herr_t H5V_chunk_index(unsigned ndims, const hssize_t *coord,
+ const hsize_t *chunk, const hsize_t *nchunks, const hsize_t *down_nchunks,
+ hsize_t *chunk_idx);
+H5_DLL ssize_t H5V_memcpyvv(void *_dst,
+ size_t dst_max_nseq, size_t *dst_curr_seq, size_t dst_len_arr[], hsize_t dst_off_arr[],
+ const void *_src,
+ size_t src_max_nseq, size_t *src_curr_seq, size_t src_len_arr[], hsize_t src_off_arr[]);
/*-------------------------------------------------------------------------