1#ifndef TATAMI_CHUNKED_SLAB_CACHE_STATS_HPP
2#define TATAMI_CHUNKED_SLAB_CACHE_STATS_HPP
7#include "sanisizer/sanisizer.hpp"
25template<
typename MaxSlabs_>
52 template<
typename Index_,
typename TargetNumSlabs_>
53 SlabCacheStats(Index_ target_length, Index_ non_target_length, TargetNumSlabs_ target_num_slabs, std::size_t cache_size_in_elements,
bool require_minimum_cache) :
74 template<
typename Index_,
typename TargetNumSlabs_>
75 SlabCacheStats(Index_ target_length, Index_ non_target_length, TargetNumSlabs_ 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 sanisizer::cap<MaxSlabs_>(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 template<
typename NumSlabs_>
88 static MaxSlabs_ compute_max_slabs_in_cache(std::size_t
slab_size_in_elements, NumSlabs_ num_slabs, std::size_t cache_size_in_elements,
bool require_minimum_cache) {
90 return sanisizer::cap<MaxSlabs_>(num_slabs);
94 if (tmp == 0 && require_minimum_cache) {
98 if (sanisizer::is_less_than_or_equal(tmp, num_slabs)) {
Methods to handle chunked tatami matrices.
Definition ChunkDimensionStats.hpp:4
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, TargetNumSlabs_ target_num_slabs, std::size_t cache_size_in_elements, bool require_minimum_cache)
Definition SlabCacheStats.hpp:53
SlabCacheStats(Index_ target_length, Index_ non_target_length, TargetNumSlabs_ target_num_slabs, std::size_t cache_size_in_bytes, std::size_t element_size, bool require_minimum_cache)
Definition SlabCacheStats.hpp:75