use crate::error::QuantResult;
use crate::types::QuantTensor;
pub trait QuantKernel: Send + Sync {
fn dequant_block(&self, block: &[u8], output: &mut [f32]) -> QuantResult<()>;
fn gemv(
&self,
quant_matrix: &QuantTensor,
input: &[f32],
output: &mut [f32],
) -> QuantResult<()>;
fn gemm(
&self,
quant_matrix: &QuantTensor,
input: &[f32],
output: &mut [f32],
m: usize,
n: usize,
k: usize,
) -> QuantResult<()>;
fn block_size(&self) -> usize;
fn block_bytes(&self) -> usize;
fn name(&self) -> &'static str;
}