summaryrefslogtreecommitdiffstats
path: root/src/H5Dpkg.h
diff options
context:
space:
mode:
authorvchoi-hdfgroup.org <vchoi@hdfgroup.org>2023-12-22 10:33:47 (GMT)
committervchoi-hdfgroup.org <vchoi@hdfgroup.org>2023-12-22 10:33:47 (GMT)
commita4630ddfb147c193c47335d6ff946d3eff197fe2 (patch)
treeac9734cf03a540448f6114bb59c75a7c4f6314c6 /src/H5Dpkg.h
parent37124bc1c1d3cd2114433a6d71648fcd57fd2bcf (diff)
downloadhdf5-a4630ddfb147c193c47335d6ff946d3eff197fe2.zip
hdf5-a4630ddfb147c193c47335d6ff946d3eff197fe2.tar.gz
hdf5-a4630ddfb147c193c47335d6ff946d3eff197fe2.tar.bz2
Work in progres for chunk cache with selection I/O improvement.
Diffstat (limited to 'src/H5Dpkg.h')
-rw-r--r--src/H5Dpkg.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/H5Dpkg.h b/src/H5Dpkg.h
index a3695ae..8ef6ade 100644
--- a/src/H5Dpkg.h
+++ b/src/H5Dpkg.h
@@ -256,6 +256,12 @@ typedef struct H5D_piece_info_t {
size_t buf_off; /* Buffer offset for in-place type conversion */
bool filtered_dset; /* Whether the dataset this chunk is in has filters applied */
struct H5D_dset_io_info_t *dset_info; /* Pointer to dset_info */
+ bool entire_chunk; /* Whether whole chunk is selected */
+ bool in_cache;
+ void *buf;
+ unsigned idx_hint; /* Index of chunk in cache, if present */
+ H5F_block_t chunk_block; /* Offset/length of chunk in file */
+ hsize_t chunk_idx; /* Chunk index for EA, FA indexing */
} H5D_piece_info_t;
/* I/O info for a single dataset */
@@ -273,6 +279,15 @@ typedef struct H5D_dset_io_info_t {
H5S_t *file_space; /* Pointer to the file dataspace */
H5S_t *mem_space; /* Pointer to the memory dataspace */
+ size_t num_sel_cache_chks; /* Number of pieces found in cache */
+ size_t num_unsel_cache_chks; /* Number of pieces NOT found in cache */
+ size_t num_chks_to_load; /* # of chunks not found in cache that needs to be loaded */
+ size_t num_ents_to_evict; /* # of non selected cache entries to be evicted */
+ size_t free_cache_slots; /* # of free slots in the cache */
+ size_t max_cache_chunks; /* max # of chunks in the cache */
+ H5SL_t *chunks_to_load; /* Skip list containing information for chunks to load to cache */
+ H5SL_t *entries_to_evict; /* Skip list containing information for entries to evict from cache */
+
union {
struct H5D_chunk_map_t *chunk_map; /* Chunk specific I/O info */
H5D_piece_info_t *contig_piece_info; /* Piece info for contiguous dataset */