15#include <unordered_map>
28 std::vector<continuum::Value>
run(
29 const ir::Graph& g,
const std::unordered_map<ir::NodeId, continuum::Value>& inputs);
32 void begin(
const ir::Graph& g,
const std::unordered_map<ir::NodeId, continuum::Value>& inputs);
36 const std::unordered_map<ir::NodeId, continuum::Value>&
active_values()
const;
57 struct ActiveExecution {
60 std::unordered_map<ir::NodeId, continuum::Value> values;
61 std::vector<continuum::Value> out;
62 std::size_t next_group_index = 0;
63 std::size_t next_node_in_group = 0;
64 std::size_t executed_nodes = 0;
67 std::vector<continuum::Value> run_to_end();
70 void emit_tier(
const std::string& tier, std::int64_t start_ns,
bool hit, std::int32_t tokens_saved = 0,
71 std::int32_t match_len = 0,
float similarity = 0.0f);
72 ir::NodeId next_planned_node(
const ActiveExecution& state)
const;
73 void advance_plan_cursor(ActiveExecution& state);
77 const ReusePolicy* policy_;
79 std::optional<ActiveExecution> active_;
80 MemoTable* memo_table_ =
nullptr;
81 SemanticCacheIndex* semantic_cache_ =
nullptr;
82 EmbeddingProvider* embedder_ =
nullptr;
83 LayerKVCacheIndex* layer_cache_ =
nullptr;
84 MemoryGraphStore* memory_graph_ =
nullptr;
85 std::string cache_namespace_;
86 ReuseObserver* observer_ =
nullptr;
87 ReuseEvent node_trace_;
Definition backend.hpp:54
Definition interpreter.hpp:24
ReuseObserver * observer() const
Definition interpreter.hpp:47
std::vector< continuum::Value > resume(const Checkpoint &checkpoint)
void set_semantic_cache(SemanticCacheIndex *sc)
Definition interpreter.hpp:39
LayerKVCacheIndex * layer_cache() const
Definition interpreter.hpp:53
MemoTable * memo_table() const
Definition interpreter.hpp:50
const std::string & cache_namespace() const
Definition interpreter.hpp:48
const std::unordered_map< ir::NodeId, continuum::Value > & active_values() const
Checkpoint run_until(ir::NodeId node_id)
void set_memo_table(MemoTable *memo)
Definition interpreter.hpp:38
void set_embedding_provider(EmbeddingProvider *ep)
Definition interpreter.hpp:40
SemanticCacheIndex * semantic_cache() const
Definition interpreter.hpp:51
void set_cache_namespace(std::string ns)
Definition interpreter.hpp:43
void begin(const ir::Graph &g, const std::unordered_map< ir::NodeId, continuum::Value > &inputs)
void set_memory_graph(MemoryGraphStore *mg)
Definition interpreter.hpp:42
Interpreter(backend::BackendRegistry &backends, KVCacheIndex &cache, const ReusePolicy *policy=nullptr)
continuum::Value step(const ir::Node &n, const std::vector< continuum::Value > &input_values)
void set_observer(ReuseObserver *observer)
Definition interpreter.hpp:46
std::vector< continuum::Value > run(const ir::Graph &g, const std::unordered_map< ir::NodeId, continuum::Value > &inputs)
MemoryGraphStore * memory_graph() const
Definition interpreter.hpp:54
EmbeddingProvider * embedding_provider() const
Definition interpreter.hpp:52
void set_layer_cache(LayerKVCacheIndex *lc)
Definition interpreter.hpp:41
Definition kv_prefix_cache.hpp:35
Definition layer_cache.hpp:66
Definition memo_table.hpp:55
Definition memory_graph.hpp:33
Definition observer.hpp:47
std::vector< std::vector< ir::NodeId > > ExecutionPlan
Definition scheduler.hpp:9
Definition semantic_cache.hpp:54
std::uint64_t NodeId
Definition node.hpp:13
Definition checkpoint.hpp:12
continuum::Value convert_value_for_backend(const continuum::Value &value, const std::string &target_backend)
std::variant< TensorValue, MlxTensorValue, TokensValue, SchemaValue, std::string, double, int64_t > Value
Definition value.hpp:30
Definition checkpoint.hpp:26
Definition semantic_cache.hpp:20
Definition session.hpp:29