pub struct Graph {
pub nodes: Vec<NodeInstance>,
pub edges: Vec<Edge>,
pub metadata: BTreeMap<String, String>,
pub metadata_values: BTreeMap<String, Value>,
}Expand description
Planner input graph (pre-pass).
use daedalus_planner::Graph;
let graph = Graph::default();
assert!(graph.nodes.is_empty());Fields§
§nodes: Vec<NodeInstance>§edges: Vec<Edge>§metadata: BTreeMap<String, String>Arbitrary metadata retained for goldens/debug.
metadata_values: BTreeMap<String, Value>Graph-level metadata (typed values) that should be visible to nodes at runtime.
This is distinct from metadata (string-only planner debug/golden output). Planner passes
may write to metadata; graph authors should write to metadata_values.
Implementations§
Source§impl Graph
impl Graph
Sourcepub fn gpu_buffers(&self) -> (Vec<GpuSegment>, Vec<EdgeBufferInfo>)
pub fn gpu_buffers(&self) -> (Vec<GpuSegment>, Vec<EdgeBufferInfo>)
Identify contiguous GPU-to-GPU chains and assign them shared buffer ids, along with edge annotations that mark where GPU fast paths can be used.
use daedalus_planner::{Graph, NodeInstance, ComputeAffinity, Edge, PortRef, NodeRef};
use daedalus_registry::ids::NodeId;
let mut graph = Graph::default();
graph.nodes.push(NodeInstance {
id: NodeId::new("a"),
bundle: None,
label: None,
inputs: vec![],
outputs: vec!["out".into()],
compute: ComputeAffinity::GpuPreferred,
const_inputs: vec![],
sync_groups: vec![],
metadata: Default::default(),
});
graph.nodes.push(NodeInstance {
id: NodeId::new("b"),
bundle: None,
label: None,
inputs: vec!["in".into()],
outputs: vec![],
compute: ComputeAffinity::GpuPreferred,
const_inputs: vec![],
sync_groups: vec![],
metadata: Default::default(),
});
graph.edges.push(Edge {
from: PortRef { node: NodeRef(0), port: "out".into() },
to: PortRef { node: NodeRef(1), port: "in".into() },
metadata: Default::default(),
});
let (segments, edges) = graph.gpu_buffers();
assert_eq!(edges.len(), 1);
assert_eq!(segments.len(), 1);Trait Implementations§
Source§impl<'de> Deserialize<'de> for Graph
impl<'de> Deserialize<'de> for Graph
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl StructuralPartialEq for Graph
Auto Trait Implementations§
impl Freeze for Graph
impl RefUnwindSafe for Graph
impl Send for Graph
impl Sync for Graph
impl Unpin for Graph
impl UnwindSafe for Graph
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more