From 6f45cf77e784d1bfc2a57119671937a3c064eac2 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Tue, 23 Feb 2021 23:41:40 +0000 Subject: Account Ksections correctly for interleaved and hybrid_indirect gemm kernels Resolves: COMPMID-4131 Signed-off-by: Georgios Pinitas Change-Id: I6ab15d5dd2e89ccda6acf06e1bef7fd85e31ce54 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5169 Tested-by: Arm Jenkins Reviewed-by: Michele Di Giorgio Comments-Addressed: Arm Jenkins --- src/core/NEON/kernels/arm_gemm/gemm_hybrid_indirect.hpp | 4 ++-- src/core/NEON/kernels/arm_gemm/gemm_interleaved.hpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/NEON/kernels/arm_gemm/gemm_hybrid_indirect.hpp b/src/core/NEON/kernels/arm_gemm/gemm_hybrid_indirect.hpp index d06c2183d1..5d5f21507f 100644 --- a/src/core/NEON/kernels/arm_gemm/gemm_hybrid_indirect.hpp +++ b/src/core/NEON/kernels/arm_gemm/gemm_hybrid_indirect.hpp @@ -577,7 +577,7 @@ public: // Note: Current hybrid kernels don't actually round up height (they // have paths for each possible height). Might need to make this // configurable in future. - uint64_t total_macs = static_cast(args._nbatches) * args._nmulti * args._Msize * roundup(args._Nsize, strategy::out_width()) * roundup(args._Ksize, strategy::k_unroll()); + uint64_t total_macs = static_cast(args._nbatches) * args._nmulti * args._Msize * roundup(args._Nsize, strategy::out_width()) * get_ktotal(args); float mac_cycles = static_cast(total_macs) / params.kernel_macs_cycle; @@ -596,7 +596,7 @@ public: const Requantize32 *qp = reinterpret_cast(&os); // Row sums: need to consider each value in A (batch * multi * M * K)... - uint64_t rowsum_bytes = static_cast(args._nbatches) * args._nmulti * args._Msize * roundup(args._Ksize, strategy::k_unroll()); + uint64_t rowsum_bytes = static_cast(args._nbatches) * args._nmulti * args._Msize * get_ktotal(args); // ... but row sums are skipped if B offset==0. if (qp->b_offset == 0) { diff --git a/src/core/NEON/kernels/arm_gemm/gemm_interleaved.hpp b/src/core/NEON/kernels/arm_gemm/gemm_interleaved.hpp index 92c1086a5f..7f870b83d7 100644 --- a/src/core/NEON/kernels/arm_gemm/gemm_interleaved.hpp +++ b/src/core/NEON/kernels/arm_gemm/gemm_interleaved.hpp @@ -1022,8 +1022,8 @@ public: static uint64_t estimate_cycles(const GemmArgs &args, const PerformanceParameters ¶ms) { unsigned int k_blocks = iceildiv(args._Ksize, get_k_block_size(args)); - uint64_t total_macs = static_cast(args._nbatches) * args._nmulti * roundup(args._Msize, strategy::out_height()) * roundup(args._Nsize, strategy::out_width()) * roundup(args._Ksize, strategy::k_unroll()); - uint64_t prepare_bytes = static_cast(args._nbatches) * args._nmulti * roundup(args._Msize, strategy::out_height()) * roundup(args._Ksize, strategy::k_unroll()) * sizeof(Toi); + uint64_t total_macs = static_cast(args._nbatches) * args._nmulti * roundup(args._Msize, strategy::out_height()) * roundup(args._Nsize, strategy::out_width()) * get_ktotal(args); + uint64_t prepare_bytes = static_cast(args._nbatches) * args._nmulti * roundup(args._Msize, strategy::out_height()) * get_ktotal(args) * sizeof(Toi); uint64_t merge_bytes = static_cast(args._nbatches) * args._nmulti * k_blocks * roundup(args._Msize, strategy::out_height()) * roundup(args._Nsize, strategy::out_width()) * sizeof(Tr); float mac_cycles = static_cast(total_macs) / params.kernel_macs_cycle; -- cgit v1.2.1