Struct tract_hir::prelude::ModelPatch [−][src]
pub struct ModelPatch<F, O> where
F: 'static + Fact + Clone + Hash,
O: 'static + Display + Debug + AsRef<dyn Op + 'static> + AsMut<dyn Op + 'static> + Clone + Hash, {
pub context: Vec<String, Global>,
pub dont_apply_twice: Option<String>,
pub model: Graph<F, O>,
pub inputs: HashMap<usize, usize, RandomState>,
pub incoming: HashMap<OutletId, OutletId, RandomState>,
pub shunt_outlet_by: HashMap<OutletId, OutletId, RandomState>,
pub obliterate: Vec<usize, Global>,
}
Expand description
A change to apply to a model.
Actually structured around a model that represent the new nodes to be inserted, plus information about how to connect these new nodes to the pre-existing graph.
Fields
context: Vec<String, Global>
patch label for auditing and debugging
dont_apply_twice: Option<String>
optimizer will ignore this patch in node to node loop if it was already encountered
model: Graph<F, O>
the model-like ‘patch’ of nodes to add to the model
inputs: HashMap<usize, usize, RandomState>
map of replaced inputs (patch node id to model node id)
incoming: HashMap<OutletId, OutletId, RandomState>
map of patch inputs to model wires
shunt_outlet_by: HashMap<OutletId, OutletId, RandomState>
map of old wires to be replaced by new wires
obliterate: Vec<usize, Global>
operations to discard from the model
Implementations
Draw a tap from a preexisting node.
returns an OutletId usable in the little “patch” model
pub unsafe fn shunt_outside_unchecked(
&mut self,
outlet: OutletId,
by: OutletId
) -> Result<(), Error>
Replace an Outlet in the target model by one from the patch.
Convenience method creating a patch that replace a single operation.
pub fn fuse_with_next<IO>(
patched_model: &Graph<F, O>,
node: &Node<F, O>,
new_op: IO
) -> Result<ModelPatch<F, O>, Error> where
IO: Into<O>,
pub fn fuse_with_next<IO>(
patched_model: &Graph<F, O>,
node: &Node<F, O>,
new_op: IO
) -> Result<ModelPatch<F, O>, Error> where
IO: Into<O>,
Convenience method creating a patch that replace a single operation.
pub fn shunt_one_op(
patched_model: &Graph<F, O>,
node: &Node<F, O>
) -> Result<ModelPatch<F, O>, Error>
pub fn shunt_one_op(
patched_model: &Graph<F, O>,
node: &Node<F, O>
) -> Result<ModelPatch<F, O>, Error>
Convenience method creating a patch that shunt the given node.
pub fn single_unary_op<IO>(
patched_model: &Graph<F, O>,
node: &Node<F, O>,
new_op: IO
) -> Result<ModelPatch<F, O>, Error> where
IO: Into<O>,
pub fn single_unary_op<IO>(
patched_model: &Graph<F, O>,
node: &Node<F, O>,
new_op: IO
) -> Result<ModelPatch<F, O>, Error> where
IO: Into<O>,
Convenience method creating a patch that replace a single unary operation.
Convenience method creating a patch that insert an unary op on an outlet.
Methods from Deref<Target = Graph<F, O>>
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.
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.
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.
Guess outputs from the topology: node or nodes with no successors.
Change model outputs.
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.
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.
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.
Get label for an outlet.
Set label for an outlet.
Find outlet by label.
Computes an evalutation order for the graph inputs and outputs
Performs a sanity check on network connections.
Perform declutter passes on the network.
pub fn concretize_dims(
&self,
values: &SymbolValues
) -> Result<Graph<TypedFact, Box<dyn TypedOp + 'static, Global>>, Error>
Trait Implementations
Returns the “default value” for a type. Read more
Auto Trait Implementations
impl<F, O> RefUnwindSafe for ModelPatch<F, O> where
F: RefUnwindSafe,
O: RefUnwindSafe,
impl<F, O> Send for ModelPatch<F, O> where
O: Send,
impl<F, O> Sync for ModelPatch<F, O> where
O: Sync,
impl<F, O> Unpin for ModelPatch<F, O> where
F: Unpin,
O: Unpin,
impl<F, O> UnwindSafe for ModelPatch<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