pub trait StageMatmulFamily:
Send
+ Sync
+ 'static {
type Matmul<MP: MatmulPrecision, TL: TilingLayout, TR: TilingLayout>: StageMatmul<MP, Config = Self::Config, LhsReader = <Self::LhsReader as ReaderFamily>::Reader<MP::ES, TL>, RhsReader = <Self::RhsReader as ReaderFamily>::Reader<MP::ES, TR>>;
type LhsReader: ReaderFamily;
type RhsReader: ReaderFamily;
type Config: StageConfig;
// Required method
fn setup<MP: MatmulPrecision, R: Runtime>(
client: &ComputeClient<R::Server, R::Channel>,
problem: &MatmulProblem,
selection: &MatmulSelection,
line_sizes: &MatmulLineSizes,
num_stages: NumStages,
max_loaders: Option<MaxLoaderPlanes>,
ordered: bool,
) -> Result<Self::Config, MatmulSetupError>;
// Provided method
fn filter_line_sizes(
available_line_sizes: AvailableLineSizes,
) -> AvailableLineSizes { ... }
}
Expand description
A family of StageMatmul implementations that operate with any precision.
Required Associated Types§
Sourcetype Matmul<MP: MatmulPrecision, TL: TilingLayout, TR: TilingLayout>: StageMatmul<MP, Config = Self::Config, LhsReader = <Self::LhsReader as ReaderFamily>::Reader<MP::ES, TL>, RhsReader = <Self::RhsReader as ReaderFamily>::Reader<MP::ES, TR>>
type Matmul<MP: MatmulPrecision, TL: TilingLayout, TR: TilingLayout>: StageMatmul<MP, Config = Self::Config, LhsReader = <Self::LhsReader as ReaderFamily>::Reader<MP::ES, TL>, RhsReader = <Self::RhsReader as ReaderFamily>::Reader<MP::ES, TR>>
The specific [TileMatmul] implementation associated with this family.
Sourcetype LhsReader: ReaderFamily
type LhsReader: ReaderFamily
Reader family for Lhs
Sourcetype RhsReader: ReaderFamily
type RhsReader: ReaderFamily
Reader family for Rhs
Sourcetype Config: StageConfig
type Config: StageConfig
The configuration type associated with this matmul family.
Required Methods§
Sourcefn setup<MP: MatmulPrecision, R: Runtime>(
client: &ComputeClient<R::Server, R::Channel>,
problem: &MatmulProblem,
selection: &MatmulSelection,
line_sizes: &MatmulLineSizes,
num_stages: NumStages,
max_loaders: Option<MaxLoaderPlanes>,
ordered: bool,
) -> Result<Self::Config, MatmulSetupError>
fn setup<MP: MatmulPrecision, R: Runtime>( client: &ComputeClient<R::Server, R::Channel>, problem: &MatmulProblem, selection: &MatmulSelection, line_sizes: &MatmulLineSizes, num_stages: NumStages, max_loaders: Option<MaxLoaderPlanes>, ordered: bool, ) -> Result<Self::Config, MatmulSetupError>
Constructs the configuration based on the matmul problem, selection, line sizes, number of stages, maximum of tasks per plane, and whether the algorithm is an ordered variant
This function may return an error if the configuration cannot be supported on the current runtime.
Provided Methods§
Sourcefn filter_line_sizes(
available_line_sizes: AvailableLineSizes,
) -> AvailableLineSizes
fn filter_line_sizes( available_line_sizes: AvailableLineSizes, ) -> AvailableLineSizes
Filters out line sizes that are incompatible with this matmul family.
By default, returns the input unchanged.
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.