pub struct QMmap<T> { /* private fields */ }Expand description
A CPU quantized store whose blocks live in an mmap’d GGUF region rather than an owned Vec.
Holds an Arc<memmap2::Mmap> plus the byte offset and block count of one tensor inside it, and
hands the dequant/matmul path a &[T] that points directly into the mapped file – so the
quantized weight bytes are never copied resident; the OS pages them in on access and reclaims
them under memory pressure (page cache = “RAM as a speed spectrum”, antirez ds4_ssd). The Arc
keeps the mapping alive for as long as any tensor references it.
This is the no-copy twin of QuantizedType for Vec<T>: every method forwards the same
k_quants routine over self.as_slice() instead of over a Vec. It is read-only – the two
from_float* (quantize) entry points are unreachable in the load path and panic if ever called
(you cannot quantize into a memory-mapped, read-only weight file).
Trait Implementations§
Source§impl<T: GgmlType + Send + Sync> QuantizedType for QMmap<T>
impl<T: GgmlType + Send + Sync> QuantizedType for QMmap<T>
fn matmul_t( &self, mkn: (usize, usize, usize), lhs: &[f32], dst: &mut [f32], ) -> Result<()>
fn matmul_t_f16( &self, mkn: (usize, usize, usize), lhs: &[f16], dst: &mut [f16], ) -> Result<()>
fn size(&self) -> usize
fn from_float(&mut self, _xs: &[f32])
fn from_float_imatrix( &mut self, _xs: &[f32], _imatrix_weights: &[f32], _n_per_row: usize, )
fn dtype(&self) -> GgmlDType
fn block_size(&self) -> usize
fn dequantize(&self, elem_count: usize) -> Result<CpuStorage>
fn storage_size_in_bytes(&self) -> usize
fn as_ptr(&self) -> *const u8
Auto Trait Implementations§
impl<T> Freeze for QMmap<T>
impl<T> RefUnwindSafe for QMmap<T>where
T: RefUnwindSafe,
impl<T> Send for QMmap<T>where
T: Send,
impl<T> Sync for QMmap<T>where
T: Sync,
impl<T> Unpin for QMmap<T>where
T: Unpin,
impl<T> UnsafeUnpin for QMmap<T>
impl<T> UnwindSafe for QMmap<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more