11#include <unordered_map>
40 h ^= std::hash<std::string>{}(k.
payload_hash) + 0x9e3779b97f4a7c15ULL + (h << 6) + (h >> 2);
42 h ^=
static_cast<std::size_t
>(b) + 0x9e3779b97f4a7c15ULL + (h << 6) + (h >> 2);
44 h ^= std::hash<std::string>{}(k.
cache_namespace) + 0x9e3779b97f4a7c15ULL + (h << 6) + (h >> 2);
76 const std::string& cache_namespace = {})
const;
79 static std::optional<continuum::Value>
deserialize_value(
const std::vector<std::uint8_t>& bytes);
82 mutable std::mutex mu_;
83 std::unordered_map<MemoKey, MemoEntry, MemoKeyHash> table_;
84 std::size_t max_entries_;
86 mutable std::uint64_t clock_ = 0;
Definition memo_table.hpp:55
MemoKey make_key(const ir::Node &node, const std::vector< continuum::Value > &inputs, const std::string &cache_namespace={}) const
void insert(MemoKey key, MemoEntry entry)
std::size_t estimated_bytes() const
Approximate resident bytes: keys, cached outputs, and per-entry overhead.
void set_version(std::size_t v)
void invalidate_node(const std::string &node_kind_str)
MemoTable(std::size_t max_entries=4096, std::size_t version=0)
static std::vector< std::uint8_t > serialize_value(const continuum::Value &v)
static std::optional< continuum::Value > deserialize_value(const std::vector< std::uint8_t > &bytes)
std::size_t version() const
std::size_t max_entries() const
Capacity in entries passed at construction.
Definition memo_table.hpp:69
void invalidate_version(std::size_t version)
std::optional< MemoEntry > lookup(const MemoKey &key) const
Definition checkpoint.hpp:12
std::variant< TensorValue, MlxTensorValue, TokensValue, SchemaValue, std::string, double, int64_t > Value
Definition value.hpp:30
Definition memo_table.hpp:30
std::uint64_t version
Definition memo_table.hpp:32
std::int64_t access_count
Definition memo_table.hpp:33
std::vector< std::uint8_t > output_bytes
Definition memo_table.hpp:31
std::int64_t last_access_ns
Definition memo_table.hpp:34
Definition memo_table.hpp:37
std::size_t operator()(const MemoKey &k) const
Definition memo_table.hpp:38
Definition memo_table.hpp:16
std::string payload_hash
Definition memo_table.hpp:18
std::string cache_namespace
Definition memo_table.hpp:20
std::vector< std::uint8_t > inputs_hash
Definition memo_table.hpp:19
std::string node_kind_str
Definition memo_table.hpp:17
bool operator==(const MemoKey &o) const
Definition memo_table.hpp:22