Struct tract_hir::internal::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