INNER CODE UNIT · Rust
quantize_impl
rustformers/llm · crates/ggml/src/lib.rs:459
fn quantize_impl(
src: &[f32],
n_elements: usize,
n_elements_0: usize,
quantizer: unsafe extern "C" fn(*const f32, *mut c_void, c_int, c_int, *mut i64) -> usize,
) -> QuantizationResult {
assert_eq!(src.len(), n_elements);
assert_eq!(n_elements % n_elements_0, 0);
// A conservative multiplier of 4 is used here.
let mut output = vec![0u8; n_elements * 4];
let mut history = vec![0i64; 16];
let output_size = unsafe {
quantizer(
src.as_ptr(),
output.as_mut_ptr() as *mut c_void,
n_elements.try_into().unwrap(),
n_elements_0.try_into().unwrap(),