Continuum C++ API
Unified runtime for token + tensor execution
Loading...
Searching...
No Matches
graph.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <optional>
6#include <unordered_map>
7#include <vector>
8
9namespace continuum::ir {
10
11class Graph {
12 public:
13 Graph() = default;
14 ~Graph() = default;
15
17 const Node& get(NodeId id) const;
19 const std::vector<NodeId>& topo_order() const;
20
21 Graph extract_subgraph(const std::vector<NodeId>& roots) const;
22 std::uint64_t structural_hash() const;
23 std::vector<std::uint8_t> serialize() const;
24 static Graph deserialize(const std::uint8_t* data, std::size_t len);
25
26 private:
27 std::unordered_map<NodeId, Node> nodes_;
28 NodeId next_id_ = 1;
29 mutable std::optional<std::vector<NodeId>> topo_cache_;
30};
31
32} // namespace continuum::ir
Definition graph.hpp:11
std::vector< std::uint8_t > serialize() const
const std::vector< NodeId > & topo_order() const
const Node & get(NodeId id) const
static Graph deserialize(const std::uint8_t *data, std::size_t len)
Node & get_mut(NodeId id)
Graph extract_subgraph(const std::vector< NodeId > &roots) const
NodeId add_node(Node n)
std::uint64_t structural_hash() const
Definition effect.hpp:5
std::uint64_t NodeId
Definition node.hpp:13
Definition node.hpp:51