pub trait Operator {
// Required methods
fn validate_tensors(
&self,
inputs: &[Option<Tensor>],
outputs: &[Option<Tensor>],
) -> SimResult;
fn compute_delay_ticks(
&self,
compute_capabilities: &Rc<ComputeCapabilities>,
inputs: &[Option<TensorView>],
outputs: &[Option<TensorView>],
) -> Result<usize, SimError>;
fn compute_machine_ops(
&self,
inputs: &[Option<TensorView>],
outputs: &[Option<TensorView>],
) -> Result<MachineOpCounts, SimError>;
fn partition_views(
&self,
input_views: &[Option<TensorView>],
output_views: &[Option<TensorView>],
num_partitions: usize,
) -> Result<Vec<TensorPartition>, SimError>;
// Provided method
fn compute_flops(
&self,
inputs: &[Option<TensorView>],
outputs: &[Option<TensorView>],
) -> Result<usize, SimError> { ... }
}Required Methods§
Sourcefn validate_tensors(
&self,
inputs: &[Option<Tensor>],
outputs: &[Option<Tensor>],
) -> SimResult
fn validate_tensors( &self, inputs: &[Option<Tensor>], outputs: &[Option<Tensor>], ) -> SimResult
Validate that the input and output tensors are valid shapes and datatypes
Sourcefn compute_delay_ticks(
&self,
compute_capabilities: &Rc<ComputeCapabilities>,
inputs: &[Option<TensorView>],
outputs: &[Option<TensorView>],
) -> Result<usize, SimError>
fn compute_delay_ticks( &self, compute_capabilities: &Rc<ComputeCapabilities>, inputs: &[Option<TensorView>], outputs: &[Option<TensorView>], ) -> Result<usize, SimError>
Returns the number of clock ticks needed to perform the specified computation give the machine capabilities
Sourcefn compute_machine_ops(
&self,
inputs: &[Option<TensorView>],
outputs: &[Option<TensorView>],
) -> Result<MachineOpCounts, SimError>
fn compute_machine_ops( &self, inputs: &[Option<TensorView>], outputs: &[Option<TensorView>], ) -> Result<MachineOpCounts, SimError>
Returns the number of machine operations performed by the specified computation, broken down by operation type.
Sourcefn partition_views(
&self,
input_views: &[Option<TensorView>],
output_views: &[Option<TensorView>],
num_partitions: usize,
) -> Result<Vec<TensorPartition>, SimError>
fn partition_views( &self, input_views: &[Option<TensorView>], output_views: &[Option<TensorView>], num_partitions: usize, ) -> Result<Vec<TensorPartition>, SimError>
Partition the operation into one or more views that can be executed in
parallel. Implementations may return fewer than num_partitions if the
operator cannot be split that finely.
Provided Methods§
Sourcefn compute_flops(
&self,
inputs: &[Option<TensorView>],
outputs: &[Option<TensorView>],
) -> Result<usize, SimError>
fn compute_flops( &self, inputs: &[Option<TensorView>], outputs: &[Option<TensorView>], ) -> Result<usize, SimError>
Returns the total number of FLOPs performed by the specified computation.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".