Continuum C++ API
Unified runtime for token + tensor execution
Loading...
Searching...
No Matches
kv_prefix_cache.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
5#include <mutex>
6#include <optional>
7#include <string>
8#include <vector>
9
10namespace continuum::runtime {
11
13 std::string op_name;
14 float temperature = 1.0f;
15 std::int32_t max_tokens = 0;
16};
17
18struct CacheEntry {
19 std::uint64_t prefix_hash = 0;
20 std::string model_id;
22 std::int32_t prefix_len = 0;
24 std::int64_t last_used_ns = 0;
26 std::string cache_namespace;
27};
28
36 public:
37 struct TrieNode {
38 std::int32_t token = -1;
39 std::vector<CacheEntry> entries;
40 std::vector<TrieNode> children;
41 };
42
43 explicit KVCacheIndex(std::size_t max_entries = 8192);
44 std::optional<std::pair<CacheEntry, std::int32_t>> longest_prefix(
45 const std::string& model_id, const DecodeParams& decode, const std::vector<std::int32_t>& tokens,
46 const std::string& cache_namespace = {}) const;
47 void insert(CacheEntry entry, const std::vector<std::int32_t>& token_prefix);
48 void insert_unlocked(CacheEntry entry, const std::vector<std::int32_t>& token_prefix);
49 void invalidate(void* backend_handle);
50 void clear();
51 std::size_t size() const;
53 std::size_t max_entries() const { return max_entries_; }
56 std::size_t estimated_bytes() const;
57
58 bool save_metadata(const std::string& path) const;
59 bool load_metadata(const std::string& path);
60
61 // Full snapshot of every entry with its token path and live backend state.
62 // Used by checkpointing to carry KV state across process boundaries.
65 std::vector<std::int32_t> tokens;
66 };
67 std::vector<SnapshotEntry> snapshot() const;
68
69 private:
70 mutable std::mutex mu_;
71 TrieNode root_;
72 std::uint64_t logical_clock_ = 0;
73 std::size_t size_ = 0;
74 std::size_t max_entries_;
75};
76
77} // namespace continuum::runtime
Definition kv_prefix_cache.hpp:35
void insert(CacheEntry entry, const std::vector< std::int32_t > &token_prefix)
KVCacheIndex(std::size_t max_entries=8192)
std::size_t estimated_bytes() const
bool save_metadata(const std::string &path) const
void insert_unlocked(CacheEntry entry, const std::vector< std::int32_t > &token_prefix)
void invalidate(void *backend_handle)
std::vector< SnapshotEntry > snapshot() const
std::optional< std::pair< CacheEntry, std::int32_t > > longest_prefix(const std::string &model_id, const DecodeParams &decode, const std::vector< std::int32_t > &tokens, const std::string &cache_namespace={}) const
std::size_t max_entries() const
Capacity in entries passed at construction.
Definition kv_prefix_cache.hpp:53
bool load_metadata(const std::string &path)
Definition checkpoint.hpp:12
Definition backend.hpp:16
Definition kv_prefix_cache.hpp:18
std::uint64_t prefix_hash
Definition kv_prefix_cache.hpp:19
std::string cache_namespace
Tenant / deployment namespace; empty preserves single-tenant behavior.
Definition kv_prefix_cache.hpp:26
std::string model_id
Definition kv_prefix_cache.hpp:20
std::int32_t prefix_len
Definition kv_prefix_cache.hpp:22
std::int64_t last_used_ns
Definition kv_prefix_cache.hpp:24
continuum::backend::BackendState backend_state
Definition kv_prefix_cache.hpp:23
DecodeParams decode
Definition kv_prefix_cache.hpp:21
Definition kv_prefix_cache.hpp:12
std::int32_t max_tokens
Definition kv_prefix_cache.hpp:15
float temperature
Definition kv_prefix_cache.hpp:14
std::string op_name
Definition kv_prefix_cache.hpp:13
Definition kv_prefix_cache.hpp:63
CacheEntry entry
Definition kv_prefix_cache.hpp:64
std::vector< std::int32_t > tokens
Definition kv_prefix_cache.hpp:65
Definition kv_prefix_cache.hpp:37
std::int32_t token
Definition kv_prefix_cache.hpp:38
std::vector< CacheEntry > entries
Definition kv_prefix_cache.hpp:39
std::vector< TrieNode > children
Definition kv_prefix_cache.hpp:40