Struct tract_hir::internal::Graph [−][src]
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.
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
.
Get the ix
-th input tensor type information.
Get the ix
-th input tensor type information, mutably.
Set the ix
-th input tensor type information.
Set the ix
-th input tensor type information and return self
.
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
.
Get the ix
-th input tensor type information.
Get the ix
-th input tensor type information, mutably.
Set the ix
-th output tensor type information.
Set the ix
-th output tensor type information and return self
.
Iterate over all node names.
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.
Get tensor information for a single outlet.
Get tensor information for a single outlet.
Get multiple mutable tensor information for outlets.
Set tensor information for a single outlet.
Set tensor information for a single outlet and return self
.
Get label for an outlet.
Set label for an outlet.
Set label for an outlet and return self
.
Find outlet by label.
Computes an evalutation order for the graph inputs and outputs
Performs a sanity check on network connections.
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).
Trait Implementations
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