1#ifndef TATAMI_CHUNKED_SLAB_CACHE_STATS_HPP
2#define TATAMI_CHUNKED_SLAB_CACHE_STATS_HPP
7#include "sanisizer/sanisizer.hpp"
25template<
typename MaxSlabs_>
51 template<
typename Index_>
52 SlabCacheStats(Index_ target_length, Index_ non_target_length, MaxSlabs_ target_num_slabs, std::size_t cache_size_in_elements,
bool require_minimum_cache) :
74 template<
typename Index_>
75 SlabCacheStats(Index_ target_length, Index_ non_target_length, MaxSlabs_ target_num_slabs, std::size_t cache_size_in_bytes, std::size_t element_size,
bool require_minimum_cache) :
78 if (element_size == 0) {
79 return target_num_slabs;
81 return compute_max_slabs_in_cache(
slab_size_in_elements, target_num_slabs, cache_size_in_bytes / element_size, require_minimum_cache);
87 static MaxSlabs_ compute_max_slabs_in_cache(std::size_t
slab_size_in_elements, MaxSlabs_ num_slabs, std::size_t cache_size_in_elements,
bool require_minimum_cache) {
93 if (tmp == 0 && require_minimum_cache) {
97 return sanisizer::min(tmp, num_slabs);
Methods to handle chunked tatami matrices.
Definition ChunkDimensionStats.hpp:11
Statistics for slab caching.
Definition SlabCacheStats.hpp:26
MaxSlabs_ max_slabs_in_cache
Definition SlabCacheStats.hpp:36
std::size_t slab_size_in_elements
Definition SlabCacheStats.hpp:30
SlabCacheStats(Index_ target_length, Index_ non_target_length, MaxSlabs_ target_num_slabs, std::size_t cache_size_in_elements, bool require_minimum_cache)
Definition SlabCacheStats.hpp:52
SlabCacheStats(Index_ target_length, Index_ non_target_length, MaxSlabs_ target_num_slabs, std::size_t cache_size_in_bytes, std::size_t element_size, bool require_minimum_cache)
Definition SlabCacheStats.hpp:75