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: PackSizes,
packing_buf: &mut [Self::Scalar],
) { ... }
fn mr(&self) -> usize { ... }
fn nr(&self) -> usize { ... }
}
Provided Associated Constants§
Required Associated Types§
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: PackSizes, packing_buf: &mut [Self::Scalar], )
fn mr(&self) -> usize
fn nr(&self) -> usize
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.