diff options
author | Georgios Pinitas <georgios.pinitas@arm.com> | 2020-07-06 19:10:38 +0100 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2020-07-07 15:07:37 +0000 |
commit | 0cc50ed757f06f4f076e261cb7253dd67264dec6 (patch) | |
tree | 866306f780f7529ea172d78210355aed761ad7a4 /src/core/NEON/kernels/arm_gemm/quantize_wrapper.hpp | |
parent | ab23dd0fbc632063235a6ad408241dc79a35d3e4 (diff) | |
download | ComputeLibrary-0cc50ed757f06f4f076e261cb7253dd67264dec6.tar.gz |
COMPMID-3324: Remove pretransposed support from NEON backend
Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com>
Change-Id: I394c6c539969940e0119cbc14174909d47e65de6
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3519
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/core/NEON/kernels/arm_gemm/quantize_wrapper.hpp')
-rw-r--r-- | src/core/NEON/kernels/arm_gemm/quantize_wrapper.hpp | 50 |
1 files changed, 6 insertions, 44 deletions
diff --git a/src/core/NEON/kernels/arm_gemm/quantize_wrapper.hpp b/src/core/NEON/kernels/arm_gemm/quantize_wrapper.hpp index 5c58c585d7..eec842d09f 100644 --- a/src/core/NEON/kernels/arm_gemm/quantize_wrapper.hpp +++ b/src/core/NEON/kernels/arm_gemm/quantize_wrapper.hpp @@ -61,16 +61,9 @@ private: } /* Local working space: We need space for the subgemm output (above) and - * the row sums. If the GEMM is not pretransposed we need to store the - * column sums here too. */ + * the row sums. */ size_t local_working_size() const { - size_t sz = subgemm_output_size() + row_sum_size(); - - if (_args._pretransposed_hint) { - return sz; - } - - return sz + col_sum_size(); + return subgemm_output_size() + row_sum_size(); } void set_child_arrays() { @@ -90,15 +83,6 @@ private: } } - void col_sums_runtime(unsigned int threadid) { - unsigned int first_col = (threadid * _args._Nsize) / _args._maxthreads; - unsigned int last_col = ((threadid + 1) * _args._Nsize) / _args._maxthreads; - - for (unsigned int multi=0; multi<_args._nmulti; multi++) { - compute_col_sums(_params, (last_col - first_col), _args._Ksize, this->_Bptr + (multi * this->_B_multi_stride) + first_col, this->_ldb, _col_sums + (multi * _args._Nsize) + first_col, _args._Ksize, multi, first_col); - } - } - void requantize_runtime(unsigned int threadid) { unsigned int first_row = (threadid * _args._Msize) / _args._maxthreads; unsigned int last_row = ((threadid+1) * _args._Msize) / _args._maxthreads; @@ -126,16 +110,12 @@ public: QuantizeWrapper operator=(const QuantizeWrapper &) = delete; QuantizeWrapper(const GemmArgs &args, const Requantize32 &qp) : _params(qp), _args(args), _barrier(args._maxthreads) { - GemmArgs newargs = GemmArgs(args._ci, args._Msize, args._Nsize, args._Ksize, args._nbatches, args._nmulti, args._trA, args._trB, Activation(), args._maxthreads, args._pretransposed_hint, nullptr); + GemmArgs newargs = GemmArgs(args._ci, args._Msize, args._Nsize, args._Ksize, args._nbatches, args._nmulti, Activation(), args._maxthreads, nullptr); _subgemm = gemm<To, Tgemm>(newargs); if (_subgemm == nullptr) { return; } - - if (!_subgemm->B_is_pretransposed()) { - _args._pretransposed_hint = false; - } } void set_arrays(const To *A, const int lda, const int A_batch_stride, const int A_multi_stride, @@ -160,9 +140,6 @@ public: void execute(const ndcoord_t &work_range, const ndcoord_t &thread_locator, int threadid) override { _subgemm->execute(work_range, thread_locator, threadid); - if (!_args._pretransposed_hint) { - col_sums_runtime(threadid); - } _barrier.arrive_and_wait(); @@ -177,7 +154,7 @@ public: // ptr // V - // | subgemm output | row_sums | col_sums (if not pretransposed | subgemm working space | + // | subgemm output | row_sums | subgemm working space | void set_working_space(void *space) override { uintptr_t space_int = reinterpret_cast<uintptr_t>(space); @@ -185,16 +162,13 @@ public: _subgemm->set_working_space(reinterpret_cast<void *>(space_int + local_working_size())); _row_sums = reinterpret_cast<int32_t *>(space_int + subgemm_output_size()); - if (!_args._pretransposed_hint) { - _col_sums = reinterpret_cast<int32_t *>(space_int + subgemm_output_size() + row_sum_size()); - } set_child_arrays(); } bool B_is_pretransposed() const override { /* We clear this flag if the subgemm isn't pretransposed, so just return its value */ - return _args._pretransposed_hint; + return _subgemm->B_is_pretransposed(); } bool B_pretranspose_required() const override { @@ -202,18 +176,10 @@ public: } size_t get_B_pretransposed_array_size() const override { - if (_args._pretransposed_hint) { - return _subgemm->get_B_pretransposed_array_size() + col_sum_size(); - } - - return 0; + return _subgemm->get_B_pretransposed_array_size() + col_sum_size(); } void pretranspose_B_array(void *buffer, const To *B, const int ldb, const int B_multi_stride) override { - if (!_args._pretransposed_hint) { - return; - } - uintptr_t buffer_int = reinterpret_cast<uintptr_t>(buffer); _subgemm->pretranspose_B_array(reinterpret_cast<void *>(buffer_int + col_sum_size()), B, ldb, B_multi_stride); @@ -223,10 +189,6 @@ public: } void set_pretransposed_B_data(void *buffer) override { - if (!_args._pretransposed_hint) { - return; - } - uintptr_t buffer_int = reinterpret_cast<uintptr_t>(buffer); _subgemm->set_pretransposed_B_data(reinterpret_cast<void *>(buffer_int + col_sum_size())); _col_sums = reinterpret_cast<int32_t *>(buffer); |