Algorithm

Trait Algorithm 

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

    // Required methods
    fn into_tensor_handle<R: Runtime>(
        client: &ComputeClient<R>,
        handle: &TensorHandleRef<'_, R>,
        dtype: StorageType,
        operation: ConvolutionOperation,
    ) -> Result<TensorHandle<R>, LaunchError>;
    fn selection<R: Runtime>(
        client: &ComputeClient<R>,
        problem: &ConvolutionProblem,
        plane_dim: u32,
        line_sizes: &MatmulLineSizes,
        matmul_elems: &mut MatmulElems,
    ) -> Result<TilingBlueprint, MatmulSetupError>;

    // Provided methods
    fn cube_count(
        selection: &TilingBlueprint,
        problem: &ConvolutionProblem,
    ) -> CubeCount { ... }
    fn multi_row_strategy() -> MultiRowStrategy { ... }
    fn loading_precompute_strategy() -> LoadingPrecomputeStrategy { ... }
    fn reader_mode() -> ReaderMode { ... }
    fn load_specialization() -> LoadFlows { ... }
    fn partition_buffering_strategy() -> PartitionBuffering { ... }
    fn expand_config(
        device_props: &DeviceProperties,
        problem: &ConvolutionProblem,
        selection: &TilingBlueprint,
        line_sizes: &MatmulLineSizes,
        dtypes: &MatmulElems,
    ) -> Result<GlobalConfig<Self::GlobalConvolution>, MatmulSetupError> { ... }
    fn filter_line_sizes(line_sizes: AvailableLineSizes) -> AvailableLineSizes { ... }
}
Expand description

Specifications for a convolution algorithm

Required Associated Types§

Required Methods§

Source

fn into_tensor_handle<R: Runtime>( client: &ComputeClient<R>, handle: &TensorHandleRef<'_, R>, dtype: StorageType, operation: ConvolutionOperation, ) -> Result<TensorHandle<R>, LaunchError>

Source

fn selection<R: Runtime>( client: &ComputeClient<R>, problem: &ConvolutionProblem, plane_dim: u32, line_sizes: &MatmulLineSizes, matmul_elems: &mut MatmulElems, ) -> Result<TilingBlueprint, MatmulSetupError>

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§