From 0a5d4ca7d9caf1be703269daffd3e6074ef7d08c Mon Sep 17 00:00:00 2001 From: Emil Ohlsson Date: Wed, 9 Apr 2025 12:20:08 +0200 Subject: [PATCH] Remove imatmul MR, NR, KR, and change mismatch dump Signed-off-by: Emil Ohlsson --- ...8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa.c | 12 ---------- ...8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa.h | 21 ---------------- ...atmul_clamp_qai8_qai8p_qsi8cxp_interface.h | 6 ----- .../matmul_clamp_qai8_qai8p_qsi8cxp_test.cpp | 24 ++++--------------- 4 files changed, 5 insertions(+), 58 deletions(-) diff --git a/kai/ukernels/matmul/imatmul_clamp_qai8_qai8p_qsi8cxp/kai_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa.c b/kai/ukernels/matmul/imatmul_clamp_qai8_qai8p_qsi8cxp/kai_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa.c index d53b1f0c..b2eeb5ef 100644 --- a/kai/ukernels/matmul/imatmul_clamp_qai8_qai8p_qsi8cxp/kai_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa.c +++ b/kai/ukernels/matmul/imatmul_clamp_qai8_qai8p_qsi8cxp/kai_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa.c @@ -30,18 +30,6 @@ size_t kai_get_n_step_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_ return kai_nr * kai_get_sme_vector_length_u32(); } -size_t kai_get_mr_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa(void) { - return kai_mr * kai_get_sme_vector_length_u32(); -} - -size_t kai_get_nr_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa(void) { - return kai_nr * kai_get_sme_vector_length_u32(); -} - -size_t kai_get_kr_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa(void) { - return kai_kr; -} - size_t kai_get_lhs_packed_offset_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa( size_t m_idx, size_t k_chunk_count, size_t k_chunk_length) { KAI_ASSUME(m_idx % kai_get_m_step_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa() == 0); diff --git a/kai/ukernels/matmul/imatmul_clamp_qai8_qai8p_qsi8cxp/kai_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa.h b/kai/ukernels/matmul/imatmul_clamp_qai8_qai8p_qsi8cxp/kai_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa.h index cc501580..21c7b526 100644 --- a/kai/ukernels/matmul/imatmul_clamp_qai8_qai8p_qsi8cxp/kai_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa.h +++ b/kai/ukernels/matmul/imatmul_clamp_qai8_qai8p_qsi8cxp/kai_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa.h @@ -32,27 +32,6 @@ size_t kai_get_m_step_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_ /// @return The n step value. size_t kai_get_n_step_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa(void); -/// Gets mr value. -/// -/// This is the packing parameter which must be used to pack the LHS matrix. -/// -/// @return The mr value. -size_t kai_get_mr_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa(void); - -/// Gets nr value. -/// -/// This is the packing parameter which must be used to pack the RHS matrix. -/// -/// @return The nr value. -size_t kai_get_nr_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa(void); - -/// Gets kr value. -/// -/// This is the packing parameter which must be used to pack the LHS and RHS matrix. -/// -/// @return The kr value. -size_t kai_get_kr_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa(void); - /// Gets the offset in bytes to the data element in the packed LHS matrix buffer. /// /// @param[in] m_idx Row index in the unpacked LHS matrix. Must be a multiple of `m_step`. diff --git a/kai/ukernels/matmul/imatmul_clamp_qai8_qai8p_qsi8cxp/kai_imatmul_clamp_qai8_qai8p_qsi8cxp_interface.h b/kai/ukernels/matmul/imatmul_clamp_qai8_qai8p_qsi8cxp/kai_imatmul_clamp_qai8_qai8p_qsi8cxp_interface.h index 01b5ca95..84ca66b1 100644 --- a/kai/ukernels/matmul/imatmul_clamp_qai8_qai8p_qsi8cxp/kai_imatmul_clamp_qai8_qai8p_qsi8cxp_interface.h +++ b/kai/ukernels/matmul/imatmul_clamp_qai8_qai8p_qsi8cxp/kai_imatmul_clamp_qai8_qai8p_qsi8cxp_interface.h @@ -17,9 +17,6 @@ extern "C" { /// Micro-kernel helper functions ("get" methods) typedef size_t (*kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_m_step_func_t)(void); typedef size_t (*kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_n_step_func_t)(void); -typedef size_t (*kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_mr_func_t)(void); -typedef size_t (*kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_nr_func_t)(void); -typedef size_t (*kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_kr_func_t)(void); typedef size_t (*kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_lhs_packed_offset_func_t)( size_t m_idx, size_t k_chunk_count, size_t k_chunk_length); typedef size_t (*kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_rhs_packed_offset_func_t)( @@ -37,9 +34,6 @@ typedef void (*kai_imatmul_clamp_qai8_qai8p_qsi8cxp_run_imatmul_func_t)( struct kai_imatmul_clamp_qai8_qai8p_qsi8cxp_ukernel { kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_m_step_func_t get_m_step; kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_n_step_func_t get_n_step; - kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_mr_func_t get_mr; - kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_nr_func_t get_nr; - kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_kr_func_t get_kr; kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_lhs_packed_offset_func_t get_lhs_packed_offset; kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_rhs_packed_offset_func_t get_rhs_packed_offset; kai_imatmul_clamp_qai8_qai8p_qsi8cxp_get_dst_offset_func_t get_dst_offset; diff --git a/test/tests/matmul_clamp_qai8_qai8p_qsi8cxp_test.cpp b/test/tests/matmul_clamp_qai8_qai8p_qsi8cxp_test.cpp index ff01ab4a..d1529ea0 100644 --- a/test/tests/matmul_clamp_qai8_qai8p_qsi8cxp_test.cpp +++ b/test/tests/matmul_clamp_qai8_qai8p_qsi8cxp_test.cpp @@ -123,9 +123,6 @@ struct MatMulKernel { struct MatMulIndirectKernel { std::function get_m_step; std::function get_n_step; - std::function get_mr; - std::function get_nr; - std::function get_kr; std::function get_packed_lhs_offset; std::function get_packed_rhs_offset; std::function get_dst_offset; @@ -252,9 +249,6 @@ const std::array indirect_gemm_variants = { MatMulIndirectKernel{ .get_m_step = kai_get_m_step_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa, .get_n_step = kai_get_n_step_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa, - .get_mr = kai_get_mr_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa, - .get_nr = kai_get_nr_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa, - .get_kr = kai_get_kr_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa, .get_packed_lhs_offset = kai_get_lhs_packed_offset_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa, .get_packed_rhs_offset = @@ -370,9 +364,6 @@ static const kai_imatmul_clamp_qai8_qai8p_qsi8cxp_ukernel imatmul_clamp_qai8_qai8_qsi8cxp2vlx4sb_1x16vl_sme2_dot_interface [[maybe_unused]] = { .get_m_step = kai_get_m_step_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa, .get_n_step = kai_get_n_step_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa, - .get_mr = kai_get_mr_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa, - .get_nr = kai_get_nr_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa, - .get_kr = kai_get_kr_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa, .get_lhs_packed_offset = kai_get_lhs_packed_offset_imatmul_clamp_qai8_qai8p2vlx4_qsi8cxpsb2vlx4_2vlx2vl_sme2_mopa, .get_rhs_packed_offset = @@ -654,7 +645,7 @@ static void compare_matmul_result( const MatMulShape& shape, const Rect& output_area, const Buffer& actual, const Buffer& reference) { size_t mismatches = 0; bool printed_row = false; - bool printed_mismatch = false; + std::ostringstream sstream; for (size_t m_i = 0; m_i < shape.m; ++m_i) { for (size_t n_i = 0; n_i < shape.n; ++n_i) { const auto i = m_i * shape.n + n_i; @@ -667,25 +658,20 @@ static void compare_matmul_result( const auto threshold = in_area ? 1 : 0; const bool mismatch = error > threshold; if (mismatch) { - if (not printed_mismatch) { - std::cout << "Mismatch(es) found:\n"; - printed_mismatch = true; - } if (not printed_row) { - std::cout << " row=" << m_i; - std::cout << " "; + sstream << " row=" << m_i << ", columns: "; printed_row = true; } - std::cout << n_i << ", "; + sstream << n_i << ", "; } mismatches += static_cast(mismatch); } if (printed_row) { - std::cout << "\n"; + sstream << "\n"; } printed_row = false; } - ASSERT_EQ(mismatches, 0) << "There are mismatches between reference result actual result"; + ASSERT_EQ(mismatches, 0) << "Mismatches between reference result and actual result:\n" << sstream.str(); } /// Test MatMul of GEMM/GEMV like kernel -- GitLab