pub struct AMXTimingConfig {
pub matrix_sizes: Vec<usize>,
pub interleave_memory_ops: bool,
pub von_neumann_debias: bool,
}Expand description
Configuration for AMX timing entropy collection.
§Example
// Use defaults (recommended)
let config = AMXTimingConfig::default();
// Or customize
let config = AMXTimingConfig {
matrix_sizes: vec![32, 128], // only two sizes
interleave_memory_ops: true,
von_neumann_debias: true,
};Fields§
§matrix_sizes: Vec<usize>Matrix dimensions to cycle through for SGEMM dispatches.
Different sizes stress different AMX pipeline configurations:
- Small (16-32): register-bound, fast dispatch
- Medium (48-64): L1-cache-bound
- Large (96-128): L2/SLC-bound, higher memory bandwidth pressure
Must be non-empty. Each value is used as both M, N, and K dimensions.
Default: [16, 32, 48, 64, 96, 128]
interleave_memory_ops: boolInterleave volatile memory reads/writes between AMX dispatches.
This thrashes a 64KB scratch buffer between matrix operations, disrupting the AMX pipeline state and preventing it from settling into a steady-state pattern. Increases min-entropy at the cost of slightly higher CPU usage.
Default: true
von_neumann_debias: boolApply Von Neumann debiasing to raw timing deltas.
The AMX timing source has severe bias (Shannon 6.985 but H∞ only 0.379). Von Neumann debiasing pairs consecutive deltas and discards equal pairs, emitting one unbiased bit per unequal pair. This costs ~50% of the raw data but dramatically improves min-entropy.
Default: true
Trait Implementations§
Source§impl Clone for AMXTimingConfig
impl Clone for AMXTimingConfig
Source§fn clone(&self) -> AMXTimingConfig
fn clone(&self) -> AMXTimingConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more