fn validate_shapes( q: &[f64], q_rows: usize, q_cols: usize, k: &[f64], k_rows: usize, k_cols: usize, v: &[f64], v_rows: usize, v_cols: usize, ) -> Result<(), String>