Trait LayoutMatMulAPI

Source
pub trait LayoutMatMulAPI<DA, DB>
where DA: DimAPI, DB: DimAPI, Self: Sized,
{ type DC: DimAPI; // Required method fn layout_matmul( la: &Layout<DA>, lb: &Layout<DB>, order: TensorIterOrder, ) -> Result<Self>; }

Required Associated Types§

Required Methods§

Source

fn layout_matmul( la: &Layout<DA>, lb: &Layout<DB>, order: TensorIterOrder, ) -> Result<Self>

Layout configuration for matmul.

For order,

  • C: return c-contig layout
  • F: return f-contig layout
  • A: c/f-contig if input is contiguous, otherwise return layout based on default tensor order (TensorOrder::default())
  • K:
    • rule 1 (vector): no effect (order is not of that important);
    • rule 7 (tensor-gemm): if input layouts returns the same permute_index in greedy_layout, then use this order; otherwise use auto order;
    • rules 2, 3, 4 (gemv/gevm/2d-gemm): the same to A;
    • rules 5, 6 (tensor-gemm): order of the layout with larger dimension.

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 LayoutMatMulAPI<Vec<usize>, Vec<usize>> for LayoutMatMulConfig<IxD, IxD>

Source§

impl LayoutMatMulAPI<Vec<usize>, [usize; 1]> for LayoutMatMulConfig<IxD, Ix1>

Source§

impl LayoutMatMulAPI<Vec<usize>, [usize; 2]> for LayoutMatMulConfig<IxD, Ix2>

Source§

impl LayoutMatMulAPI<Vec<usize>, [usize; 3]> for LayoutMatMulConfig<IxD, Ix3>

Source§

impl LayoutMatMulAPI<Vec<usize>, [usize; 4]> for LayoutMatMulConfig<IxD, Ix4>

Source§

impl LayoutMatMulAPI<Vec<usize>, [usize; 5]> for LayoutMatMulConfig<IxD, Ix5>

Source§

impl LayoutMatMulAPI<Vec<usize>, [usize; 6]> for LayoutMatMulConfig<IxD, Ix6>

Source§

impl LayoutMatMulAPI<Vec<usize>, [usize; 7]> for LayoutMatMulConfig<IxD, Ix7>

Source§

impl LayoutMatMulAPI<Vec<usize>, [usize; 8]> for LayoutMatMulConfig<IxD, Ix8>

Source§

impl LayoutMatMulAPI<Vec<usize>, [usize; 9]> for LayoutMatMulConfig<IxD, Ix9>

Source§

impl LayoutMatMulAPI<[usize; 1], Vec<usize>> for LayoutMatMulConfig<Ix1, IxD>

Source§

impl LayoutMatMulAPI<[usize; 1], [usize; 1]> for LayoutMatMulConfig<Ix1, Ix1>

Source§

type DC = [usize; 0]

Source§

impl LayoutMatMulAPI<[usize; 1], [usize; 2]> for LayoutMatMulConfig<Ix1, Ix2>

Source§

type DC = [usize; 1]

Source§

impl LayoutMatMulAPI<[usize; 1], [usize; 3]> for LayoutMatMulConfig<Ix1, Ix3>

Source§

type DC = [usize; 2]

Source§

impl LayoutMatMulAPI<[usize; 1], [usize; 4]> for LayoutMatMulConfig<Ix1, Ix4>

Source§

type DC = [usize; 3]

Source§

impl LayoutMatMulAPI<[usize; 1], [usize; 5]> for LayoutMatMulConfig<Ix1, Ix5>

Source§

type DC = [usize; 4]

Source§

impl LayoutMatMulAPI<[usize; 1], [usize; 6]> for LayoutMatMulConfig<Ix1, Ix6>

Source§

type DC = [usize; 5]

Source§

impl LayoutMatMulAPI<[usize; 1], [usize; 7]> for LayoutMatMulConfig<Ix1, Ix7>

Source§

type DC = [usize; 6]

Source§

impl LayoutMatMulAPI<[usize; 1], [usize; 8]> for LayoutMatMulConfig<Ix1, Ix8>

Source§

type DC = [usize; 7]

Source§

impl LayoutMatMulAPI<[usize; 1], [usize; 9]> for LayoutMatMulConfig<Ix1, Ix9>

Source§

type DC = [usize; 8]

Source§

impl LayoutMatMulAPI<[usize; 2], Vec<usize>> for LayoutMatMulConfig<Ix2, IxD>

Source§

impl LayoutMatMulAPI<[usize; 2], [usize; 1]> for LayoutMatMulConfig<Ix2, Ix1>

Source§

type DC = [usize; 1]

Source§

impl LayoutMatMulAPI<[usize; 2], [usize; 2]> for LayoutMatMulConfig<Ix2, Ix2>

Source§

type DC = [usize; 2]

Source§

impl LayoutMatMulAPI<[usize; 2], [usize; 3]> for LayoutMatMulConfig<Ix2, Ix3>

Source§

type DC = [usize; 3]

Source§

impl LayoutMatMulAPI<[usize; 2], [usize; 4]> for LayoutMatMulConfig<Ix2, Ix4>

Source§

type DC = [usize; 4]

Source§

impl LayoutMatMulAPI<[usize; 2], [usize; 5]> for LayoutMatMulConfig<Ix2, Ix5>

Source§

type DC = [usize; 5]

Source§

impl LayoutMatMulAPI<[usize; 2], [usize; 6]> for LayoutMatMulConfig<Ix2, Ix6>

Source§

type DC = [usize; 6]

Source§

impl LayoutMatMulAPI<[usize; 2], [usize; 7]> for LayoutMatMulConfig<Ix2, Ix7>

Source§

type DC = [usize; 7]

Source§

impl LayoutMatMulAPI<[usize; 2], [usize; 8]> for LayoutMatMulConfig<Ix2, Ix8>

Source§

type DC = [usize; 8]

Source§

impl LayoutMatMulAPI<[usize; 2], [usize; 9]> for LayoutMatMulConfig<Ix2, Ix9>

Source§

type DC = [usize; 9]

Source§

impl LayoutMatMulAPI<[usize; 3], Vec<usize>> for LayoutMatMulConfig<Ix3, IxD>

Source§

impl LayoutMatMulAPI<[usize; 3], [usize; 1]> for LayoutMatMulConfig<Ix3, Ix1>

Source§

type DC = [usize; 2]

Source§

impl LayoutMatMulAPI<[usize; 3], [usize; 2]> for LayoutMatMulConfig<Ix3, Ix2>

Source§

type DC = [usize; 3]

Source§

impl LayoutMatMulAPI<[usize; 3], [usize; 3]> for LayoutMatMulConfig<Ix3, Ix3>

Source§

type DC = [usize; 3]

Source§

impl LayoutMatMulAPI<[usize; 4], Vec<usize>> for LayoutMatMulConfig<Ix4, IxD>

Source§

impl LayoutMatMulAPI<[usize; 4], [usize; 1]> for LayoutMatMulConfig<Ix4, Ix1>

Source§

type DC = [usize; 3]

Source§

impl LayoutMatMulAPI<[usize; 4], [usize; 2]> for LayoutMatMulConfig<Ix4, Ix2>

Source§

type DC = [usize; 4]

Source§

impl LayoutMatMulAPI<[usize; 4], [usize; 4]> for LayoutMatMulConfig<Ix4, Ix4>

Source§

type DC = [usize; 4]

Source§

impl LayoutMatMulAPI<[usize; 5], Vec<usize>> for LayoutMatMulConfig<Ix5, IxD>

Source§

impl LayoutMatMulAPI<[usize; 5], [usize; 1]> for LayoutMatMulConfig<Ix5, Ix1>

Source§

type DC = [usize; 4]

Source§

impl LayoutMatMulAPI<[usize; 5], [usize; 2]> for LayoutMatMulConfig<Ix5, Ix2>

Source§

type DC = [usize; 5]

Source§

impl LayoutMatMulAPI<[usize; 5], [usize; 5]> for LayoutMatMulConfig<Ix5, Ix5>

Source§

type DC = [usize; 5]

Source§

impl LayoutMatMulAPI<[usize; 6], Vec<usize>> for LayoutMatMulConfig<Ix6, IxD>

Source§

impl LayoutMatMulAPI<[usize; 6], [usize; 1]> for LayoutMatMulConfig<Ix6, Ix1>

Source§

type DC = [usize; 5]

Source§

impl LayoutMatMulAPI<[usize; 6], [usize; 2]> for LayoutMatMulConfig<Ix6, Ix2>

Source§

type DC = [usize; 6]

Source§

impl LayoutMatMulAPI<[usize; 6], [usize; 6]> for LayoutMatMulConfig<Ix6, Ix6>

Source§

type DC = [usize; 6]

Source§

impl LayoutMatMulAPI<[usize; 7], Vec<usize>> for LayoutMatMulConfig<Ix7, IxD>

Source§

impl LayoutMatMulAPI<[usize; 7], [usize; 1]> for LayoutMatMulConfig<Ix7, Ix1>

Source§

type DC = [usize; 6]

Source§

impl LayoutMatMulAPI<[usize; 7], [usize; 2]> for LayoutMatMulConfig<Ix7, Ix2>

Source§

type DC = [usize; 7]

Source§

impl LayoutMatMulAPI<[usize; 7], [usize; 7]> for LayoutMatMulConfig<Ix7, Ix7>

Source§

type DC = [usize; 7]

Source§

impl LayoutMatMulAPI<[usize; 8], Vec<usize>> for LayoutMatMulConfig<Ix8, IxD>

Source§

impl LayoutMatMulAPI<[usize; 8], [usize; 1]> for LayoutMatMulConfig<Ix8, Ix1>

Source§

type DC = [usize; 7]

Source§

impl LayoutMatMulAPI<[usize; 8], [usize; 2]> for LayoutMatMulConfig<Ix8, Ix2>

Source§

type DC = [usize; 8]

Source§

impl LayoutMatMulAPI<[usize; 8], [usize; 8]> for LayoutMatMulConfig<Ix8, Ix8>

Source§

type DC = [usize; 8]

Source§

impl LayoutMatMulAPI<[usize; 9], Vec<usize>> for LayoutMatMulConfig<Ix9, IxD>

Source§

impl LayoutMatMulAPI<[usize; 9], [usize; 1]> for LayoutMatMulConfig<Ix9, Ix1>

Source§

type DC = [usize; 8]

Source§

impl LayoutMatMulAPI<[usize; 9], [usize; 2]> for LayoutMatMulConfig<Ix9, Ix2>

Source§

type DC = [usize; 9]

Source§

impl LayoutMatMulAPI<[usize; 9], [usize; 9]> for LayoutMatMulConfig<Ix9, Ix9>

Source§

type DC = [usize; 9]