fn main() {
const N: usize = 64;
let a = vec![1.0f32; N * N];
let mut b = vec![0.0f32; N * N];
for i in 0..N {
b[i * N + i] = 1.0;
}
let mut c = vec![0.0f32; N * N];
let start = std::time::Instant::now();
acpu::matmul_f32(&a, &b, &mut c, N, N, N);
let elapsed = start.elapsed();
let mut max_err = 0.0f32;
for i in 0..N * N {
let err = (c[i] - 1.0).abs();
if err > max_err {
max_err = err;
}
}
println!("acpu::matmul_f32 {N}x{N} x {N}x{N}");
println!(" elapsed: {:.3?}", elapsed);
println!(" max error: {:.2e}", max_err);
if max_err < 1e-5 {
println!(" result: PASS");
} else {
println!(" result: FAIL");
std::process::exit(1);
}
}