pub struct UnifiedQuantizedVector { /* private fields */ }Expand description
Owned, 128-byte-aligned unified quantized vector buffer.
Layout (contiguous bytes):
[ QuantHeader (32 B) | packed_bits (variable) | outlier_payload (8 B × n) | tail_pad ]The total allocation is always a multiple of 128 bytes (one AVX-512 cache-line pair).
Implementations§
Source§impl UnifiedQuantizedVector
impl UnifiedQuantizedVector
Sourcepub fn new(
header: QuantHeader,
packed_bits: &[u8],
outliers: &[(u32, f32)],
) -> Result<Self, CodecError>
pub fn new( header: QuantHeader, packed_bits: &[u8], outliers: &[(u32, f32)], ) -> Result<Self, CodecError>
Construct from an explicit header, packed-bit slice, and sparse outlier list.
outliers is a slice of (dim_index, value) pairs. The
outlier_bitmask in header must have exactly one bit set for each
entry in outliers, and bits must correspond to entries in ascending
dim_index order (i.e. popcnt-dense order).
§Errors
Returns CodecError::LayoutError if:
outliers.len()does not matchpopcnt(header.outlier_bitmask).- Any
dim_indexinoutliersis ≥ 64 (bitmask only covers 64 dims).
Sourcepub fn header(&self) -> &QuantHeader
pub fn header(&self) -> &QuantHeader
Zero-copy reference to the header (first 32 bytes).
Sourcepub fn packed_bits(&self) -> &[u8] ⓘ
pub fn packed_bits(&self) -> &[u8] ⓘ
Slice of the packed-bit region.
Sourcepub fn outlier_count(&self) -> u32
pub fn outlier_count(&self) -> u32
Number of outlier entries, computed via popcnt of outlier_bitmask.
Sourcepub fn outlier_at(&self, slot: u32) -> Option<(u32, f32)>
pub fn outlier_at(&self, slot: u32) -> Option<(u32, f32)>
Return the outlier (dim_index, value) for the dimension at position
slot in the bitmask.
slot is the dimension index (0–63). Returns None if the bit for
slot is not set in outlier_bitmask, or if slot ≥ 64.
Uses a branchless popcnt to find the dense offset into the outlier payload.
Trait Implementations§
Source§impl AsRef<UnifiedQuantizedVector> for BbqQuantized
impl AsRef<UnifiedQuantizedVector> for BbqQuantized
Source§fn as_ref(&self) -> &UnifiedQuantizedVector
fn as_ref(&self) -> &UnifiedQuantizedVector
Source§impl AsRef<UnifiedQuantizedVector> for OpqQuantized
impl AsRef<UnifiedQuantizedVector> for OpqQuantized
Source§fn as_ref(&self) -> &UnifiedQuantizedVector
fn as_ref(&self) -> &UnifiedQuantizedVector
Source§impl AsRef<UnifiedQuantizedVector> for RaBitQQuantized
impl AsRef<UnifiedQuantizedVector> for RaBitQQuantized
Source§fn as_ref(&self) -> &UnifiedQuantizedVector
fn as_ref(&self) -> &UnifiedQuantizedVector
Source§impl AsRef<UnifiedQuantizedVector> for TernaryQuantized
impl AsRef<UnifiedQuantizedVector> for TernaryQuantized
Source§fn as_ref(&self) -> &UnifiedQuantizedVector
fn as_ref(&self) -> &UnifiedQuantizedVector
Auto Trait Implementations§
impl Freeze for UnifiedQuantizedVector
impl RefUnwindSafe for UnifiedQuantizedVector
impl Send for UnifiedQuantizedVector
impl Sync for UnifiedQuantizedVector
impl Unpin for UnifiedQuantizedVector
impl UnsafeUnpin for UnifiedQuantizedVector
impl UnwindSafe for UnifiedQuantizedVector
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
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.