Skip to main content

cpu_int_dot_enabled

Function cpu_int_dot_enabled 

Source
pub fn cpu_int_dot_enabled() -> bool
Expand description

Whether CPU Q8_0 / Q4_0 / Q4_K / Q5_K / Q6_K matvec should quantize the activation to int8 and use the integer vec_dot path. Q4_K additionally lazy-repacks into interleaved block_q4_Kx8 for 8-wide GEMV; Q8_0 into block_q8_0x4 and Q4_0 into block_q4_0x4 for 4-wide GEMV.

Off by default as a library, and turned on by both binaries (see ferrox_core::threads’s siblings in ferrox-cli/ferrox-server, which set FERROX_CPU_INT_DOT=1 unless the caller already chose). The split is deliberate: this is what llama.cpp’s CPU backend does unconditionally – quantize the activation to Q8, run integer vec_dot – and it is worth 28% of CPU decode on Host B (Qwen2.5-0.5B Q8_0, -ngl 0 -t 6: 58.0 -> 80.5 tok/s). But it also perturbs results below the f32 reference’s precision, and this crate’s golden cross-validation against the independent NumPy reference asserts exact agreement. So the inference product defaults to fast and the library default stays reference-exact.