Algorithm

Trait Algorithm 

Source
pub trait Algorithm {
    type SelectionArgs: Default + Clone;
    type TileMatmul: TileMatmulFamily;
    type StageMatmul: StageMatmulFamily;
    type GlobalMatmul: GlobalMatmulFamily;
    type BatchMatmul: BatchMatmulFamily;

    // Required method
    fn selection<R: Runtime>(
        client: &ComputeClient<R::Server>,
        problem: &MatmulProblem,
        plane_dim: u32,
        line_sizes: &MatmulLineSizes,
        elems: MatmulElems,
        args: &Self::SelectionArgs,
    ) -> Result<MatmulSelection, MatmulSetupError>;

    // Provided methods
    fn setup<MP: MatmulPrecision, R: Runtime>(
        client: &ComputeClient<R::Server>,
        problem: &MatmulProblem,
        selection: &MatmulSelection,
        line_sizes: &MatmulLineSizes,
    ) -> Result<<Self::BatchMatmul as BatchMatmulFamily>::Config, MatmulSetupError> { ... }
    fn filter_line_sizes(
        available_line_sizes: AvailableLineSizes,
    ) -> AvailableLineSizes { ... }
    fn select_plane_dim<R: Runtime>(client: &ComputeClient<R::Server>) -> u32 { ... }
}
Expand description

Specifications for a matmul algorithm

Required Associated Types§

Required Methods§

Source

fn selection<R: Runtime>( client: &ComputeClient<R::Server>, problem: &MatmulProblem, plane_dim: u32, line_sizes: &MatmulLineSizes, elems: MatmulElems, args: &Self::SelectionArgs, ) -> Result<MatmulSelection, 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§

Source§

impl Algorithm for DoubleUnitAlgorithm

Source§

impl Algorithm for DoubleVecMatAlgorithm

Source§

impl Algorithm for SimpleVecMatAlgorithm

Source§

impl<LL, RL> Algorithm for SimpleUnitAlgorithm<LL, RL>

Source§

impl<TMM> Algorithm for CyclicDoubleBufferingAlgorithm<TMM>
where TMM: TileMatmulFamily<LhsTile = Strided, RhsTile = Strided, AccTile = Filled, OutTile = Strided>,

Source§

impl<TMM> Algorithm for HybridDoubleBufferingAlgorithm<TMM>
where TMM: TileMatmulFamily<LhsTile = Strided, RhsTile = Strided, AccTile = Filled, OutTile = Strided>,

Source§

impl<TMM> Algorithm for TilewiseDoubleBufferingAlgorithm<TMM>
where TMM: TileMatmulFamily<LhsTile = Strided, RhsTile = Strided, AccTile = Filled, OutTile = Strided>,

Source§

impl<TMM> Algorithm for OrderedDoubleBufferingAlgorithm<TMM>
where TMM: TileMatmulFamily<LhsTile = Strided, RhsTile = Strided, AccTile = Filled, OutTile = Strided>,

Source§

impl<TMM> Algorithm for SimpleTmaAlgorithm<TMM>
where TMM: TileMatmulFamily<LhsTile = Strided, RhsTile = Strided, AccTile = Filled, OutTile = Strided>,

Source§

impl<TMM, L> Algorithm for SimpleBarrierAlgorithm<TMM, L>
where TMM: TileMatmulFamily<LhsTile = Strided, RhsTile = Strided, AccTile = Filled, OutTile = Strided>, L: AsyncFullLoadingStrategy,

Source§

impl<TMM, LL, RL> Algorithm for SimpleAlgorithm<TMM, LL, RL>
where TMM: TileMatmulFamily<LhsTile = Strided, RhsTile = Strided, AccTile = Filled, OutTile = Strided>, LL: SyncFullLoadingStrategy, RL: SyncFullLoadingStrategy,