cubecl_quant/
lib.rs

1#![cfg_attr(not(feature = "std"), no_std)]
2
3extern crate alloc;
4
5#[cfg(feature = "kernels")]
6pub mod dequantize;
7
8#[cfg(feature = "kernels")]
9pub mod quantize;
10
11#[cfg(feature = "kernels")]
12pub mod layout;
13
14pub use cubecl_common::quant::scheme;
15
16#[cfg(feature = "export_tests")]
17pub mod tests;
18
19#[cfg(feature = "kernels")]
20pub(crate) mod utils {
21    use crate::scheme::{QuantLevel, QuantScheme};
22
23    pub(crate) fn check_block_size_compat(scheme: &QuantScheme, div: usize) {
24        // Validate block size compatibility
25        if let QuantScheme {
26            level: QuantLevel::Block(block_size),
27            ..
28        } = scheme
29        {
30            let block_size = *block_size.as_slice().last().unwrap() as usize;
31            assert!(
32                block_size.is_multiple_of(div),
33                "Block size must be divisible by {div}, got block_size={block_size}"
34            );
35        }
36    }
37}