use super::super::{fused_q4k_dot, fused_q4k_dot_simd};
use std::time::Instant;
const Q4K_SUPER_BLOCK_BYTES: usize = 144;
const QK_K: usize = 256;
fn create_test_q4k_data(num_super_blocks: usize) -> Vec<u8> {
let mut data = vec![0u8; num_super_blocks * Q4K_SUPER_BLOCK_BYTES];
for sb in 0..num_super_blocks {
let offset = sb * Q4K_SUPER_BLOCK_BYTES;
data[offset] = 0x66;
data[offset + 1] = 0x2E;
data[offset + 2] = 0x99;
data[offset + 3] = 0x28;
for i in 0..12 {
data[offset + 4 + i] = (i as u8 * 5) & 0x3F;
}
for i in 0..128 {
let lo = (i % 16) as u8;
let hi = ((i + 1) % 16) as u8;
data[offset + 16 + i] = (hi << 4) | lo;
}
}
data
}
fn create_test_activations(num_super_blocks: usize) -> Vec<f32> {
let len = num_super_blocks * QK_K;
(0..len)
.map(|i| {
let v = (i % 256) as f32 / 256.0;
v * 2.0 - 1.0 })
.collect()
}
#[test]
fn test_simd_scalar_numerical_parity() {
let num_super_blocks = 16; let q4k_data = create_test_q4k_data(num_super_blocks);
let activations = create_test_activations(num_super_blocks);
let scalar_result = fused_q4k_dot(&q4k_data, &activations).expect("scalar should succeed");
let simd_result = fused_q4k_dot_simd(&q4k_data, &activations).expect("simd should succeed");
let rel_diff = if scalar_result.abs() > 1e-10 {
(scalar_result - simd_result).abs() / scalar_result.abs()
} else {
(scalar_result - simd_result).abs()
};
assert!(
rel_diff < 1e-4, "SIMD/scalar parity failed: scalar={}, simd={}, rel_diff={:.2e}",
scalar_result,
simd_result,
rel_diff
);
}
#[test]
#[ignore = "Performance test - run with --ignored"]
fn test_simd_performance_speedup() {
let num_super_blocks = 256; let q4k_data = create_test_q4k_data(num_super_blocks);
let activations = create_test_activations(num_super_blocks);
for _ in 0..10 {
let _ = fused_q4k_dot(&q4k_data, &activations);
let _ = fused_q4k_dot_simd(&q4k_data, &activations);
}
let iterations = 1000;
let start = Instant::now();
for _ in 0..iterations {
let _ = fused_q4k_dot(&q4k_data, &activations);
}
let scalar_duration = start.elapsed();
let start = Instant::now();
for _ in 0..iterations {
let _ = fused_q4k_dot_simd(&q4k_data, &activations);
}
let simd_duration = start.elapsed();
let speedup = scalar_duration.as_secs_f64() / simd_duration.as_secs_f64();
println!("Performance Falsification Gate Results:");
println!(
" Scalar: {:?} for {} iterations",
scalar_duration, iterations
);
println!(
" SIMD: {:?} for {} iterations",
simd_duration, iterations
);
println!(" Speedup: {:.2}x", speedup);
assert!(
speedup >= 1.5,
"SIMD speedup too low: {:.2}x (expected ≥2x). SIMD path may not be exercised.",
speedup
);
}
#[test]
fn test_simd_feature_detection() {
#[cfg(target_arch = "x86_64")]
{
let has_avx2 = std::is_x86_feature_detected!("avx2");
let has_avx512f = std::is_x86_feature_detected!("avx512f");
let has_avx512vnni = std::is_x86_feature_detected!("avx512vnni");
println!("CPU Feature Detection:");
println!(" AVX2: {}", has_avx2);
println!(" AVX512F: {}", has_avx512f);
println!(" AVX512VNNI: {}", has_avx512vnni);
assert!(has_avx2, "AVX2 not detected on Threadripper 7960X");
assert!(has_avx512f, "AVX512F not detected on Threadripper 7960X");
assert!(
has_avx512vnni,
"AVX512VNNI not detected on Threadripper 7960X"
);
}
#[cfg(not(target_arch = "x86_64"))]
{
println!("Non-x86 platform - SIMD features not checked");
}
}
#[test]
fn test_simd_vectorization_sizes() {
let sizes = [1, 2, 4, 8, 16, 32, 64];
for &num_sb in &sizes {
let q4k_data = create_test_q4k_data(num_sb);
let activations = create_test_activations(num_sb);
let scalar = fused_q4k_dot(&q4k_data, &activations).expect("scalar failed");
let simd = fused_q4k_dot_simd(&q4k_data, &activations).expect("simd failed");
let rel_diff = if scalar.abs() > 1e-10 {
(scalar - simd).abs() / scalar.abs()
} else {
(scalar - simd).abs()
};
assert!(
rel_diff < 1e-4,
"Size {} mismatch: scalar={}, simd={}, rel_diff={}",
num_sb,
scalar,
simd,
rel_diff
);
}
}
#[test]
fn test_simd_edge_case_values() {
let num_super_blocks = 4;
let q4k_data = create_test_q4k_data(num_super_blocks);
let zero_activations = vec![0.0f32; num_super_blocks * QK_K];
let scalar_zero = fused_q4k_dot(&q4k_data, &zero_activations).expect("scalar failed");
let simd_zero = fused_q4k_dot_simd(&q4k_data, &zero_activations).expect("simd failed");
assert!(
(scalar_zero - simd_zero).abs() < 1e-6,
"Zero activation mismatch"
);
let ones_activations = vec![1.0f32; num_super_blocks * QK_K];
let scalar_ones = fused_q4k_dot(&q4k_data, &ones_activations).expect("scalar failed");
let simd_ones = fused_q4k_dot_simd(&q4k_data, &ones_activations).expect("simd failed");
let rel_diff = if scalar_ones.abs() > 1e-10 {
(scalar_ones - simd_ones).abs() / scalar_ones.abs()
} else {
(scalar_ones - simd_ones).abs()
};
assert!(
rel_diff < 1e-4,
"Ones activation mismatch: scalar={}, simd={}",
scalar_ones,
simd_ones
);
let neg_activations = vec![-0.5f32; num_super_blocks * QK_K];
let scalar_neg = fused_q4k_dot(&q4k_data, &neg_activations).expect("scalar failed");
let simd_neg = fused_q4k_dot_simd(&q4k_data, &neg_activations).expect("simd failed");
let rel_diff = if scalar_neg.abs() > 1e-10 {
(scalar_neg - simd_neg).abs() / scalar_neg.abs()
} else {
(scalar_neg - simd_neg).abs()
};
assert!(
rel_diff < 1e-4,
"Negative activation mismatch: scalar={}, simd={}",
scalar_neg,
simd_neg
);
}
#[test]
fn test_simd_minimum_size() {
let q4k_data = create_test_q4k_data(1);
let activations = create_test_activations(1);
let scalar = fused_q4k_dot(&q4k_data, &activations).expect("scalar failed");
let simd = fused_q4k_dot_simd(&q4k_data, &activations).expect("simd failed");
let rel_diff = if scalar.abs() > 1e-10 {
(scalar - simd).abs() / scalar.abs()
} else {
(scalar - simd).abs()
};
assert!(
rel_diff < 1e-4,
"Minimum size mismatch: scalar={}, simd={}",
scalar,
simd
);
}
#[test]
#[ignore = "Large memory test - run with --ignored"]
fn test_simd_large_size() {
let num_super_blocks = 4096;
let q4k_data = create_test_q4k_data(num_super_blocks);
let activations = create_test_activations(num_super_blocks);
let scalar = fused_q4k_dot(&q4k_data, &activations).expect("scalar failed");
let simd = fused_q4k_dot_simd(&q4k_data, &activations).expect("simd failed");
let rel_diff = if scalar.abs() > 1e-10 {
(scalar - simd).abs() / scalar.abs()
} else {
(scalar - simd).abs()
};
assert!(
rel_diff < 1e-3, "Large size mismatch: scalar={}, simd={}",
scalar,
simd
);
}
#[test]
fn test_scalar_path_coverage() {
let q4k_data = create_test_q4k_data(4);
let activations = create_test_activations(4);
let result = fused_q4k_dot(&q4k_data, &activations).expect("scalar should succeed");
assert!(result.is_finite(), "Result should be finite");
}
#[test]
fn test_simd_dispatcher_coverage() {
let q4k_data = create_test_q4k_data(4);
let activations = create_test_activations(4);
let result = fused_q4k_dot_simd(&q4k_data, &activations).expect("simd should succeed");
assert!(result.is_finite(), "Result should be finite");
}
#[test]
fn test_simd_error_paths() {
let activations = create_test_activations(4);
let invalid_data = vec![0u8; 145];
let result = fused_q4k_dot_simd(&invalid_data, &activations);
assert!(result.is_err(), "Should error on invalid length");
let q4k_data = create_test_q4k_data(4);
let wrong_activations = vec![0.0f32; 100]; let result = fused_q4k_dot_simd(&q4k_data, &wrong_activations);
assert!(result.is_err(), "Should error on mismatched length");
}
#[test]
fn test_empty_input_handling() {
let empty_data: Vec<u8> = vec![];
let empty_activations: Vec<f32> = vec![];
let scalar = fused_q4k_dot(&empty_data, &empty_activations).expect("empty scalar");
let simd = fused_q4k_dot_simd(&empty_data, &empty_activations).expect("empty simd");
assert_eq!(scalar, 0.0, "Empty scalar should be 0");
assert_eq!(simd, 0.0, "Empty simd should be 0");
}
#[test]
fn test_document_unfalsifiable_paths() {
println!("Unfalsifiable Hardware Paths:");
println!(" // pmat-ignore: hardware-path (NEON on ARM only)");
println!(" // pmat-ignore: hardware-path (AVX-512 without VNNI)");
#[cfg(target_arch = "x86_64")]
{
println!("\nDetected x86_64 - AVX paths testable");
if std::is_x86_feature_detected!("avx512vnni") {
println!(" AVX-512 VNNI available - optimal path testable");
} else if std::is_x86_feature_detected!("avx512f") {
println!(" AVX-512 F available - fallback path testable");
} else if std::is_x86_feature_detected!("avx2") {
println!(" AVX2 available - basic SIMD path testable");
}
}
#[cfg(target_arch = "aarch64")]
{
println!("\nDetected aarch64 - NEON paths testable");
}
}