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. 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