|
tatami_chunked
Helpers to create custom chunked tatami matrices
|
Statistics for slab caching. More...
#include <SlabCacheStats.hpp>
Public Member Functions | |
| SlabCacheStats (Index_ target_length, Index_ non_target_length, Index_ target_num_slabs, std::size_t cache_size_in_elements, bool require_minimum_cache) | |
| SlabCacheStats (Index_ target_length, Index_ non_target_length, Index_ target_num_slabs, std::size_t cache_size_in_bytes, std::size_t element_size, bool require_minimum_cache) | |
Public Attributes | |
| std::size_t | slab_size_in_elements |
| Index_ | max_slabs_in_cache |
Statistics for slab caching.
This computes the slab size and the number of slabs to be cached, given the dimensions of the slab and the cache size in bytes. The assumption is that all slabs are of the same shape, partitioning the matrix into regular intervals along the target dimension. Developers should check out CustomDenseChunkedMatrix for some usage examples.
| Index_ | Integer type of the dimension extents. This is also used as the type of the maximum number of slabs, under the assumption that there are no more slabs than the larger dimension extent. |
|
inline |
| target_length | Length of the target dimension of each slab. For example, if we were iterating through rows of a matrix, target_length would be the number of rows spanned by each slab. |
| non_target_length | Length of the non-target dimension of each slab. For example, if we were iterating through matrix rows, the non_target_length would be the number of columns spanned by each slab. |
| target_num_slabs | Number of slabs required to span the full extent of the target dimension of the matrix. This is used as an upper bound on the value of max_slabs_in_cache. For example, if we were iterating through matrix rows, the target_num_slabs would be the number of slabs required to span all rows of the matrix. |
| cache_size_in_elements | Total size of the cache, in terms of the number of data elements. |
| require_minimum_cache | Whether to enforce a minimum size of the cache for efficient extraction of consecutive dimension elements, even if it exceeds cache_size_in_elements. |
|
inline |
| target_length | Length of the target dimension of each slab. For example, if we were iterating through rows of a matrix, target_length would be the number of rows spanned by each slab. |
| non_target_length | Length of the non-target dimension of each slab. For example, if we were iterating through matrix rows, the non_target_length would be the number of columns spanned by each slab. |
| target_num_slabs | Number of slabs required to span the full extent of the target dimension of the matrix. This is used as an upper bound on the value of max_slabs_in_cache. For example, if we were iterating through matrix rows, the target_num_slabs would be the number of slabs required to span all rows of the matrix. |
| cache_size_in_bytes | Total size of the cache, in terms of the number of bytes. |
| element_size | Size of each data element in the cache, in bytes. This may be zero, e.g., when neither the value nor the index are required during sparse extraction. |
| require_minimum_cache | Whether to enforce a minimum size of the cache for efficient extraction of consecutive dimension elements, even if it exceeds cache_size_in_bytes. |
| std::size_t tatami_chunked::SlabCacheStats< Index_ >::slab_size_in_elements |
Size of each slab, in terms of the number of data elements.
| Index_ tatami_chunked::SlabCacheStats< Index_ >::max_slabs_in_cache |
Number of slabs that can fit in the cache. This is used as max_slabs in LruSlabCache, OracularSlabCache and friends.