pub trait Kernel{
type Scalar;
type Mr: ArrayLength + Multiply<Self::Nr>;
type Nr: ArrayLength;
const MR: usize = <Self::Mr>::USIZE;
const NR: usize = <Self::Nr>::USIZE;
// Required method
fn microkernel(
&self,
alpha: Self::Scalar,
lhs: &MatRef<'_, Self::Scalar>,
rhs: &MatRef<'_, Self::Scalar>,
beta: Self::Scalar,
dst: &mut MatMut<'_, Self::Scalar>
);
// Provided methods
fn gemm(
&self,
alpha: Self::Scalar,
a: &MatRef<'_, Self::Scalar>,
b: &MatRef<'_, Self::Scalar>,
beta: Self::Scalar,
c: &mut MatMut<'_, Self::Scalar>,
pack_sizes: impl AsRef<PackSizes>,
packing_buf: &mut [Self::Scalar]
) { ... }
fn mr(&self) -> usize { ... }
fn nr(&self) -> usize { ... }
}Required Associated Types§
Provided Associated Constants§
Required Methods§
fn microkernel( &self, alpha: Self::Scalar, lhs: &MatRef<'_, Self::Scalar>, rhs: &MatRef<'_, Self::Scalar>, beta: Self::Scalar, dst: &mut MatMut<'_, Self::Scalar> )
Provided Methods§
fn gemm( &self, alpha: Self::Scalar, a: &MatRef<'_, Self::Scalar>, b: &MatRef<'_, Self::Scalar>, beta: Self::Scalar, c: &mut MatMut<'_, Self::Scalar>, pack_sizes: impl AsRef<PackSizes>, packing_buf: &mut [Self::Scalar] )
fn mr(&self) -> usize
fn nr(&self) -> usize
Object Safety§
This trait is not object safe.