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§
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
Sourcefn 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 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>
Make a convolution config from a convolution problem, and launch options
fn filter_line_sizes( available_line_sizes: AvailableLineSizes, ) -> AvailableLineSizes
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.