1#ifndef TATAMI_CHUNKED_SLAB_CACHE_STATS_HPP
2#define TATAMI_CHUNKED_SLAB_CACHE_STATS_HPP
7#include "sanisizer/sanisizer.hpp"
19template<
typename Index_>
20Index_ compute_max_slabs_in_cache(std::size_t slab_size_in_elements, Index_ num_slabs, std::size_t cache_size_in_elements,
bool require_minimum_cache) {
21 if (slab_size_in_elements == 0) {
25 auto tmp = cache_size_in_elements / slab_size_in_elements;
26 if (tmp == 0 && require_minimum_cache) {
30 return sanisizer::min(tmp, num_slabs);
46template<
typename Index_>
70 SlabCacheStats(Index_ target_length, Index_ non_target_length, Index_ target_num_slabs, std::size_t cache_size_in_elements,
bool require_minimum_cache) :
90 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) :
93 if (element_size == 0) {
94 return target_num_slabs;
96 return compute_max_slabs_in_cache(
slab_size_in_elements, target_num_slabs, cache_size_in_bytes / element_size, require_minimum_cache);
Methods to handle chunked tatami matrices.
Definition ChunkDimensionStats.hpp:11
Statistics for slab caching.
Definition SlabCacheStats.hpp:47
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)
Definition SlabCacheStats.hpp:90
std::size_t slab_size_in_elements
Definition SlabCacheStats.hpp:51
Index_ max_slabs_in_cache
Definition SlabCacheStats.hpp:57
SlabCacheStats(Index_ target_length, Index_ non_target_length, Index_ target_num_slabs, std::size_t cache_size_in_elements, bool require_minimum_cache)
Definition SlabCacheStats.hpp:70