Trait tract_core::ops::TypedOp [−][src]
pub trait TypedOp: Op + Debug + DynClone + Send + Sync + 'static + Downcast + EvalOp + DynHash {
Show 14 methods
fn as_op(&self) -> &dyn Op;
fn as_op_mut(&mut self) -> &mut dyn Op;
fn output_facts(
&self,
inputs: &[&TypedFact]
) -> TractResult<TVec<TypedFact>>;
fn invariants(
&self,
inputs: &[&TypedFact],
outputs: &[&TypedFact]
) -> TractResult<Invariants> { ... }
fn fuse(
&self,
_model: &TypedModel,
_node: &TypedNode
) -> TractResult<Option<TypedModelPatch>> { ... }
fn declutter(
&self,
model: &TypedModel,
node: &TypedNode
) -> TractResult<Option<TypedModelPatch>> { ... }
fn cost(&self, _inputs: &[&TypedFact]) -> TractResult<TVec<(Cost, TDim)>> { ... }
fn suggested_axis_changes(&self) -> TractResult<TVec<(InOut, AxisOp)>> { ... }
fn change_axes(
&self,
model: &TypedModel,
node: &TypedNode,
io: InOut,
change: &AxisOp
) -> TractResult<Option<AxisChangeConsequence>> { ... }
fn slice_output(
&self,
model: &TypedModel,
node: &TypedNode,
patch: &mut TypedModelPatch,
output_slot: usize,
axis: usize,
start: usize,
end: usize
) -> TractResult<Option<OutletId>> { ... }
fn quantize(
&self,
model: &TypedModel,
node: &TypedNode,
dt: DatumType,
scale: f32,
zero_point: i32
) -> TractResult<Option<Box<dyn TypedOp>>> { ... }
fn concretize_dims(
&self,
source: &TypedModel,
node: &TypedNode,
target: &mut TypedModel,
mapping: &HashMap<OutletId, OutletId>,
values: &SymbolValues
) -> TractResult<TVec<OutletId>> { ... }
fn codegen(
&self,
model: &TypedModel,
node: &TypedNode
) -> TractResult<Option<TypedModelPatch>> { ... }
fn nested_model_multipliers(
&self,
inputs: &[&TypedFact]
) -> Vec<(Cow<'_, str>, f64)>ⓘ { ... }
}
Required methods
fn output_facts(&self, inputs: &[&TypedFact]) -> TractResult<TVec<TypedFact>>
fn output_facts(&self, inputs: &[&TypedFact]) -> TractResult<TVec<TypedFact>>
Deduce output facts from input facts.
Provided methods
fn invariants(
&self,
inputs: &[&TypedFact],
outputs: &[&TypedFact]
) -> TractResult<Invariants>
fn fuse(
&self,
_model: &TypedModel,
_node: &TypedNode
) -> TractResult<Option<TypedModelPatch>>
fn fuse(
&self,
_model: &TypedModel,
_node: &TypedNode
) -> TractResult<Option<TypedModelPatch>>
Fuse op after codegen to deal with local optimisations.
fn declutter(
&self,
model: &TypedModel,
node: &TypedNode
) -> TractResult<Option<TypedModelPatch>>
fn declutter(
&self,
model: &TypedModel,
node: &TypedNode
) -> TractResult<Option<TypedModelPatch>>
Declutter the op to the tract_core operator set as much as possible.
Computes a cost hint of the operation.
Each pair is a type of operation and a number per call on eval.
fn suggested_axis_changes(&self) -> TractResult<TVec<(InOut, AxisOp)>>
fn change_axes(
&self,
model: &TypedModel,
node: &TypedNode,
io: InOut,
change: &AxisOp
) -> TractResult<Option<AxisChangeConsequence>>
fn slice_output(
&self,
model: &TypedModel,
node: &TypedNode,
patch: &mut TypedModelPatch,
output_slot: usize,
axis: usize,
start: usize,
end: usize
) -> TractResult<Option<OutletId>>
Transforms the op in an equivalent one, operating on dt (i8 or u8).
Returns None if the op can not be translated.
fn concretize_dims(
&self,
source: &TypedModel,
node: &TypedNode,
target: &mut TypedModel,
mapping: &HashMap<OutletId, OutletId>,
values: &SymbolValues
) -> TractResult<TVec<OutletId>>
fn concretize_dims(
&self,
source: &TypedModel,
node: &TypedNode,
target: &mut TypedModel,
mapping: &HashMap<OutletId, OutletId>,
values: &SymbolValues
) -> TractResult<TVec<OutletId>>
Transform the op into by providing a value to one or more symbols.
fn codegen(
&self,
model: &TypedModel,
node: &TypedNode
) -> TractResult<Option<TypedModelPatch>>
fn codegen(
&self,
model: &TypedModel,
node: &TypedNode
) -> TractResult<Option<TypedModelPatch>>
Translate the op into the most efficient form possible for execution.
This transformation is supposed to be final, no more pass are expected to be run on the codegen networks.