pub struct Codec;Expand description
Zero-sized stateless codec service. Mirrors Python tinyquant_cpu.codec.Codec.
Implementations§
Source§impl Codec
impl Codec
Sourcepub fn compress(
&self,
vector: &[f32],
config: &CodecConfig,
codebook: &Codebook,
) -> Result<CompressedVector, CodecError>
pub fn compress( &self, vector: &[f32], config: &CodecConfig, codebook: &Codebook, ) -> Result<CompressedVector, CodecError>
Compress a single vector. vector.len() must equal config.dimension().
Pipeline: rotate → quantize → (optional) residual.
§Errors
CodecError::DimensionMismatchifvector.len() != config.dimension()CodecError::CodebookIncompatibleifcodebook.bit_width() != config.bit_width()
Sourcepub fn decompress(
&self,
compressed: &CompressedVector,
config: &CodecConfig,
codebook: &Codebook,
) -> Result<Vec<f32>, CodecError>
pub fn decompress( &self, compressed: &CompressedVector, config: &CodecConfig, codebook: &Codebook, ) -> Result<Vec<f32>, CodecError>
Allocating decompress — returns a new Vec<f32>.
§Errors
Propagates errors from Self::decompress_into.
Sourcepub fn decompress_into(
&self,
compressed: &CompressedVector,
config: &CodecConfig,
codebook: &Codebook,
output: &mut [f32],
) -> Result<(), CodecError>
pub fn decompress_into( &self, compressed: &CompressedVector, config: &CodecConfig, codebook: &Codebook, output: &mut [f32], ) -> Result<(), CodecError>
In-place decompress into caller-supplied buffer.
Pipeline: dequantize → (optional) apply residual → inverse rotate.
§Errors
CodecError::ConfigMismatchifcompressed.config_hash() != config.config_hash()CodecError::CodebookIncompatibleon bit-width mismatchCodecError::DimensionMismatchifoutput.len() != config.dimension()
Sourcepub fn compress_batch(
&self,
vectors: &[f32],
rows: usize,
cols: usize,
config: &CodecConfig,
codebook: &Codebook,
) -> Result<Vec<CompressedVector>, CodecError>
pub fn compress_batch( &self, vectors: &[f32], rows: usize, cols: usize, config: &CodecConfig, codebook: &Codebook, ) -> Result<Vec<CompressedVector>, CodecError>
Row-major batch compress using the serial strategy.
§Errors
CodecError::DimensionMismatchifcols != config.dimension()CodecError::LengthMismatchifvectors.len() != rows * cols
Sourcepub fn compress_batch_with(
&self,
vectors: &[f32],
rows: usize,
cols: usize,
config: &CodecConfig,
codebook: &Codebook,
parallelism: Parallelism,
) -> Result<Vec<CompressedVector>, CodecError>
pub fn compress_batch_with( &self, vectors: &[f32], rows: usize, cols: usize, config: &CodecConfig, codebook: &Codebook, parallelism: Parallelism, ) -> Result<Vec<CompressedVector>, CodecError>
Row-major batch compress with explicit parallelism strategy.
Phase 21: honours parallelism. Serial runs the existing single-threaded
loop; Custom(driver) uses the MaybeUninit + AtomicPtr<CompressedVector> parallel path in
batch.rs (requires the std feature).
The determinism contract guarantees byte-identical output regardless of
the driver or thread count (see batch.rs module doc).
§Errors
Same as Self::compress_batch.
Sourcepub fn decompress_batch_into(
&self,
compressed: &[CompressedVector],
config: &CodecConfig,
codebook: &Codebook,
output: &mut [f32],
) -> Result<(), CodecError>
pub fn decompress_batch_into( &self, compressed: &[CompressedVector], config: &CodecConfig, codebook: &Codebook, output: &mut [f32], ) -> Result<(), CodecError>
Batch decompress into a contiguous row-major output buffer.
§Errors
CodecError::LengthMismatchifoutput.len() != compressed.len() * config.dimension()- Propagates per-vector decompress errors.