Trait Algorithm

Source
pub trait Algorithm {
    type TileMatmul: TileMatmulFamily;
    type StageMatmul: StageMatmulFamily;
    type GlobalConvolution: ConvolutionFamily;
    type Args: MatmulArgs;

    // Required methods
    fn num_stages() -> NumStages;
    fn into_tensor_handle<R: Runtime, E: Numeric>(
        client: &ComputeClient<R::Server, R::Channel>,
        handle: &TensorHandleRef<'_, R>,
        ident: InputIdent,
    ) -> TensorHandle<R, E>;
    fn selection<R: Runtime>(
        client: &ComputeClient<R::Server, R::Channel>,
        problem: &ConvolutionProblem,
        plane_dim: u32,
        elem_stage: Elem,
        elem_acc: Elem,
    ) -> MatmulSelection;

    // Provided methods
    fn cube_count(
        selection: &MatmulSelection,
        problem: &ConvolutionProblem,
    ) -> CubeCount { ... }
    fn multi_row_strategy() -> MultiRowStrategy { ... }
    fn loading_precompute_strategy() -> LoadingPrecomputeStrategy { ... }
    fn loader_mode() -> LoaderMode { ... }
    fn load_specialization() -> LoadSpecializationConfig { ... }
    fn partition_buffering_strategy() -> PartitionBuffering { ... }
    fn setup<R: Runtime, MP: MatmulPrecision>(
        client: &ComputeClient<R::Server, R::Channel>,
        problem: &ConvolutionProblem,
        selection: &MatmulSelection,
        line_sizes: &MatmulLineSizes,
    ) -> Result<<Self::GlobalConvolution as ConvolutionConfigFactory>::Config, MatmulSetupError> { ... }
    fn filter_line_sizes(
        available_line_sizes: AvailableLineSizes,
    ) -> AvailableLineSizes { ... }
}
Expand description

Specifications for a convolution algorithm

Required Associated Types§

Required Methods§

Source

fn num_stages() -> NumStages

Source

fn into_tensor_handle<R: Runtime, E: Numeric>( client: &ComputeClient<R::Server, R::Channel>, handle: &TensorHandleRef<'_, R>, ident: InputIdent, ) -> TensorHandle<R, E>

Source

fn selection<R: Runtime>( client: &ComputeClient<R::Server, R::Channel>, problem: &ConvolutionProblem, plane_dim: u32, elem_stage: Elem, elem_acc: Elem, ) -> MatmulSelection

Provided Methods§

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§