use numr::runtime::Runtime;
use numr::tensor::Tensor;
use super::method::DecomposedQuantMethod;
pub struct DecomposedQuantTensor<R: Runtime> {
pub qweight: Tensor<R>,
pub scales: Tensor<R>,
pub qzeros: Tensor<R>,
pub g_idx: Option<Tensor<R>>,
pub method: DecomposedQuantMethod,
pub logical_shape: Vec<usize>,
}
impl<R: Runtime> DecomposedQuantTensor<R> {
pub fn new(
qweight: Tensor<R>,
scales: Tensor<R>,
qzeros: Tensor<R>,
g_idx: Option<Tensor<R>>,
method: DecomposedQuantMethod,
logical_shape: Vec<usize>,
) -> Self {
Self {
qweight,
scales,
qzeros,
g_idx,
method,
logical_shape,
}
}
pub fn shape(&self) -> &[usize] {
&self.logical_shape
}
pub fn group_size(&self) -> usize {
self.method.group_size()
}
}