1. H5D__chunk_hash_val: When the number of chunks in the fastest changing dimension is larger than the number of slots in the hash table, H5D__chunk_hash_val abandons the normal hash value calculation algorithm and simply uses the scaled dimension. This will cause chunks a selection that cuts across chunks in dimensions other than the fastest changing to all have the same hash value, and they will therefore always evict each other from the cache, having an obvious major performance impact. Eliminated the check for the number of slots in this function and always use the full algorithm.
2. H5D__chunk_init: When the scaled dimensions (number of chunks in each dimension) are calculated in H5D__chunk_init, a simple divide ("/") operator is used with the dataset size in elements and the chunk size in elements. While this is fine when the dataset size is an exact multiple of the chunk size, in other cases, since "/" rounds down, it results in a scaled dimension one less than it should (it ignores the partial edge chunk). This has trickle down effects on hash value calculation that can cause excess hash value collisions and therefore performance issues. Changed the calculation to (((dataset_size - 1) / chunk_size) + 1).
Tested the build with Autotool and CMake.
and CMake.
* CMake will no longer install private generated headers and tools
library headers.
* Several empty public header files (which represent internal packages)
were removed. These were only installed by CMake.
* Autotools installs will install H5FDwindows.h.
Fixes HDFFV-10614.
This brings the H5VL code in line with the H5I code regarding
naming, parameter order, etc.
Several public API calls were affected by this change.
These changed names to reflect their use with VOL drivers:
H5VLregister() --> H5VLregister_driver()
H5VLregister_by_name() --> H5VLregister_driver_by_name()
H5VLunregister() --> H5VLunregister_driver()
H5VLis_registered() --> H5VLis_driver_registered()
This call was renamed to match H5Iregister(). The order of the first
two parameters also reversed and the object pointer is now const.
H5VLobject_register() --> H5VLregister()
* commit '1e8ef703cdc057211b3587be776a6e9f62e8f76f':
Fixed a C++ style commenting issue and removed an unused field from H5F_trav_obj_ids_t.
Fixed a memory issue in H5Drefresh() where the dataset's H5VL_object_t gets closed but we try to use it to find the driver.