Struct tract_pulse::internal::Graph  [−]
pub struct Graph<F, O> where
    F: 'static + Fact + Hash + Clone,
    O: 'static + Debug + Display + AsRef<dyn Op + 'static> + AsMut<dyn Op + 'static> + Clone + Hash,  {
    pub nodes: Vec<Node<F, O>, Global>,
    pub inputs: Vec<OutletId, Global>,
    pub outputs: Vec<OutletId, Global>,
    pub outlet_labels: HashMap<OutletId, String, RandomState>,
    pub properties: HashMap<String, Arc<Tensor>, RandomState>,
}Expand description
Main model class
Parameterized by a Fact class.
Fields
nodes: Vec<Node<F, O>, Global>all nodes in the model
inputs: Vec<OutletId, Global>model inputs
outputs: Vec<OutletId, Global>model outputs
outlet_labels: HashMap<OutletId, String, RandomState>outlet labels
properties: HashMap<String, Arc<Tensor>, RandomState>model properties
Implementations
pub fn add_node(
    &mut self, 
    name: impl Into<String>, 
    op: impl Into<O>, 
    output_facts: SmallVec<[F; 4]>
) -> Result<usize, Error>
Connect a node outlet to a node inlet.
Change model inputs and return self.
pub fn set_input_names(
    &mut self, 
    inputs: impl IntoIterator<Item = impl AsRef<str>>
) -> Result<(), Error>
pub fn set_input_names(
    &mut self, 
    inputs: impl IntoIterator<Item = impl AsRef<str>>
) -> Result<(), Error>
Set model inputs by the node name.
pub fn with_input_names(
    self, 
    inputs: impl IntoIterator<Item = impl AsRef<str>>
) -> Result<Graph<F, O>, Error>
pub fn with_input_names(
    self, 
    inputs: impl IntoIterator<Item = impl AsRef<str>>
) -> Result<Graph<F, O>, Error>
Set model inputs by the node name and return self.
pub fn input_fact(&self, ix: usize) -> Result<&F, Error>
pub fn input_fact(&self, ix: usize) -> Result<&F, Error>
Get the ix-th input tensor type information.
pub fn input_fact_mut(&mut self, ix: usize) -> Result<&mut F, Error>
pub fn input_fact_mut(&mut self, ix: usize) -> Result<&mut F, Error>
Get the ix-th input tensor type information, mutably.
pub fn set_input_fact(&mut self, input: usize, fact: F) -> Result<(), Error>
pub fn set_input_fact(&mut self, input: usize, fact: F) -> Result<(), Error>
Set the ix-th input tensor type information.
pub fn with_input_fact(
    self, 
    input: usize, 
    fact: F
) -> Result<Graph<F, O>, Error>
pub fn with_input_fact(
    self, 
    input: usize, 
    fact: F
) -> Result<Graph<F, O>, Error>
Set the ix-th input tensor type information and return self.
pub fn auto_outputs(&mut self) -> Result<(), Error>
pub fn auto_outputs(&mut self) -> Result<(), Error>
Guess outputs from the topology: node or nodes with no successors.
Change model outputs.
Change model outputs and return self.
pub fn set_output_names(
    &mut self, 
    outputs: impl IntoIterator<Item = impl AsRef<str>>
) -> Result<(), Error>
pub fn set_output_names(
    &mut self, 
    outputs: impl IntoIterator<Item = impl AsRef<str>>
) -> Result<(), Error>
Set model outputs by node names.
pub fn with_output_names(
    self, 
    outputs: impl IntoIterator<Item = impl AsRef<str>>
) -> Result<Graph<F, O>, Error>
pub fn with_output_names(
    self, 
    outputs: impl IntoIterator<Item = impl AsRef<str>>
) -> Result<Graph<F, O>, Error>
Set model outputs by node names and return self.
pub fn output_fact(&self, ix: usize) -> Result<&F, Error>
pub fn output_fact(&self, ix: usize) -> Result<&F, Error>
Get the ix-th input tensor type information.
pub fn output_fact_mut(&mut self, ix: usize) -> Result<&mut F, Error>
pub fn output_fact_mut(&mut self, ix: usize) -> Result<&mut F, Error>
Get the ix-th input tensor type information, mutably.
pub fn set_output_fact(&mut self, output: usize, fact: F) -> Result<(), Error>
pub fn set_output_fact(&mut self, output: usize, fact: F) -> Result<(), Error>
Set the ix-th output tensor type information.
pub fn with_output_fact(
    self, 
    output: usize, 
    fact: F
) -> Result<Graph<F, O>, Error>
pub fn with_output_fact(
    self, 
    output: usize, 
    fact: F
) -> Result<Graph<F, O>, Error>
Set the ix-th output tensor type information and return self.
pub fn node_names(&self) -> impl Iterator<Item = &str>
pub fn node_names(&self) -> impl Iterator<Item = &str>
Iterate over all node names.
pub fn node_id_by_name(&self, name: &str) -> Result<usize, Error>
Find a node by its name.
Borrow mutably a node by its name.
Access the nodes table.
Access the nodes table.
Get input and output tensor information for a node.
Get input tensor information for a node.
Get output tensor information for a node.
pub fn outlet_fact(&self, outlet: OutletId) -> Result<&F, Error>
pub fn outlet_fact(&self, outlet: OutletId) -> Result<&F, Error>
Get tensor information for a single outlet.
pub fn outlet_fact_mut(&mut self, outlet: OutletId) -> Result<&mut F, Error>
pub fn outlet_fact_mut(&mut self, outlet: OutletId) -> Result<&mut F, Error>
Get tensor information for a single outlet.
Get multiple mutable tensor information for outlets.
pub fn set_outlet_fact(
    &mut self, 
    outlet: OutletId, 
    fact: F
) -> Result<(), Error>
pub fn set_outlet_fact(
    &mut self, 
    outlet: OutletId, 
    fact: F
) -> Result<(), Error>
Set tensor information for a single outlet.
pub fn with_outlet_fact(
    self, 
    outlet: OutletId, 
    fact: F
) -> Result<Graph<F, O>, Error>
pub fn with_outlet_fact(
    self, 
    outlet: OutletId, 
    fact: F
) -> Result<Graph<F, O>, Error>
Set tensor information for a single outlet and return self.
pub fn outlet_label(&self, outlet: OutletId) -> Option<&str>
pub fn outlet_label(&self, outlet: OutletId) -> Option<&str>
Get label for an outlet.
Set label for an outlet.
Set label for an outlet and return self.
pub fn find_outlet_label(&self, label: &str) -> Option<OutletId>
pub fn find_outlet_label(&self, label: &str) -> Option<OutletId>
Find outlet by label.
Computes an evalutation order for the graph inputs and outputs
pub fn check_edges(&self) -> Result<(), Error>
pub fn check_edges(&self) -> Result<(), Error>
Performs a sanity check on network connections.
pub fn into_runnable(self) -> Result<SimplePlan<F, O, Graph<F, O>>, Error>
pub fn into_runnable(self) -> Result<SimplePlan<F, O, Graph<F, O>>, Error>
Converts the model into a RunnableModel which fixes the inputs and outputs and allows passing data through the model.
Perform declutter passes on the network.
pub fn concretize_dims(
    &self, 
    values: &SymbolValues
) -> Result<Graph<TypedFact, Box<dyn TypedOp + 'static, Global>>, Error>
Translate the graph to locally optimized operators (LIR or MIR ops).
pub fn invariants(&self) -> Result<Invariants, Error>
Trait Implementations
Build a model from a filename.
pub fn proto_model_for_path(
    &self, 
    path: impl AsRef<Path>
) -> Result<ProtoModel, Error>
pub fn proto_model_for_path(
    &self, 
    path: impl AsRef<Path>
) -> Result<ProtoModel, Error>
Read a proto model from a filename.
pub fn proto_model_for_read(
    &self, 
    reader: &mut dyn Read
) -> Result<ProtoModel, Error>
pub fn proto_model_for_read(
    &self, 
    reader: &mut dyn Read
) -> Result<ProtoModel, Error>
Parse a proto model from a reader.
Translate a proto model into a model.
fn model_for_read(&self, r: &mut dyn Read) -> Result<Model, Error>
fn model_for_read(&self, r: &mut dyn Read) -> Result<Model, Error>
Read a model from a reader
pub fn create_dummy(&self) -> Box<dyn TypedOp + 'static, Global>ⓘimpl<W> Write for Box<W, Global> where
    W: Write + ?Sized, impl<R> Read for Box<R, Global> where
    R: Read + ?Sized, impl<F, A> Future for Box<F, A> where
    F: Future + Unpin + ?Sized,
    A: Allocator + 'static,     type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
    I: Iterator + ?Sized,
    A: Allocator,     type Item = <I as Iterator>::Item;
impl<W> Write for Box<W, Global> where
    W: Write + ?Sized, impl<R> Read for Box<R, Global> where
    R: Read + ?Sized, impl<F, A> Future for Box<F, A> where
    F: Future + Unpin + ?Sized,
    A: Allocator + 'static,     type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
    I: Iterator + ?Sized,
    A: Allocator,     type Item = <I as Iterator>::Item;pub fn create_source(
    &self, 
    fact: TypedFact
) -> Box<dyn TypedOp + 'static, Global>ⓘimpl<W> Write for Box<W, Global> where
    W: Write + ?Sized, impl<R> Read for Box<R, Global> where
    R: Read + ?Sized, impl<F, A> Future for Box<F, A> where
    F: Future + Unpin + ?Sized,
    A: Allocator + 'static,     type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
    I: Iterator + ?Sized,
    A: Allocator,     type Item = <I as Iterator>::Item;
impl<W> Write for Box<W, Global> where
    W: Write + ?Sized, impl<R> Read for Box<R, Global> where
    R: Read + ?Sized, impl<F, A> Future for Box<F, A> where
    F: Future + Unpin + ?Sized,
    A: Allocator + 'static,     type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
    I: Iterator + ?Sized,
    A: Allocator,     type Item = <I as Iterator>::Item;Auto Trait Implementations
impl<F, O> RefUnwindSafe for Graph<F, O> where
    F: RefUnwindSafe,
    O: RefUnwindSafe, 
impl<F, O> UnwindSafe for Graph<F, O> where
    F: UnwindSafe + RefUnwindSafe,
    O: UnwindSafe, 
Blanket Implementations
Mutably borrows from an owned value. Read more
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>ⓘimpl<W> Write for Box<W, Global> where
    W: Write + ?Sized, impl<R> Read for Box<R, Global> where
    R: Read + ?Sized, impl<F, A> Future for Box<F, A> where
    F: Future + Unpin + ?Sized,
    A: Allocator + 'static,     type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
    I: Iterator + ?Sized,
    A: Allocator,     type Item = <I as Iterator>::Item;
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>ⓘimpl<W> Write for Box<W, Global> where
    W: Write + ?Sized, impl<R> Read for Box<R, Global> where
    R: Read + ?Sized, impl<F, A> Future for Box<F, A> where
    F: Future + Unpin + ?Sized,
    A: Allocator + 'static,     type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
    I: Iterator + ?Sized,
    A: Allocator,     type Item = <I as Iterator>::Item;
impl<W> Write for Box<W, Global> where
    W: Write + ?Sized, impl<R> Read for Box<R, Global> where
    R: Read + ?Sized, impl<F, A> Future for Box<F, A> where
    F: Future + Unpin + ?Sized,
    A: Allocator + 'static,     type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
    I: Iterator + ?Sized,
    A: Allocator,     type Item = <I as Iterator>::Item;Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more
Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more
Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s. Read more
Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s. Read more