diff options
author | Moritz Pflanzer <moritz.pflanzer@arm.com> | 2017-07-05 16:34:28 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-09-17 14:15:39 +0100 |
commit | 0745a980c6a5e2d294bcd09f3c704e6cf4fe316d (patch) | |
tree | 9e4140ee657c23ca9497461019772aba4f9ba4dd /src/core/CL/kernels/CLGEMMTranspose1xWKernel.cpp | |
parent | b158fba3d2724abab70706f04069da6fc9146429 (diff) | |
download | ComputeLibrary-0745a980c6a5e2d294bcd09f3c704e6cf4fe316d.tar.gz |
COMPMID-417: Fix assert in GEMMTranspose
The assert was checking the wrong thing. Only if the window over the
input is smaller than the number of processed elements, the output shape
would be empty.
However, the valid region will be empty if the input's first dimension
is less than the number of elements processed. That required the changes
in TensorShape.
Change-Id: I36fed7893dfd502e26c5c776c9a2d774d6cd91c6
Reviewed-on: http://mpd-gerrit.cambridge.arm.com/79813
Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com>
Reviewed-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Diffstat (limited to 'src/core/CL/kernels/CLGEMMTranspose1xWKernel.cpp')
-rw-r--r-- | src/core/CL/kernels/CLGEMMTranspose1xWKernel.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/core/CL/kernels/CLGEMMTranspose1xWKernel.cpp b/src/core/CL/kernels/CLGEMMTranspose1xWKernel.cpp index 27b215f2c8..5057c8ff21 100644 --- a/src/core/CL/kernels/CLGEMMTranspose1xWKernel.cpp +++ b/src/core/CL/kernels/CLGEMMTranspose1xWKernel.cpp @@ -57,8 +57,7 @@ void CLGEMMTranspose1xWKernel::configure(const ICLTensor *input, ICLTensor *outp ARM_COMPUTE_ERROR_ON_MISMATCHING_FIXED_POINT(input, output); const unsigned int num_elems_processed_per_iteration = 16 / input->info()->element_size(); - const float scale_x = num_elems_processed_per_iteration; - ARM_COMPUTE_ERROR_ON((0 == static_cast<int>(input->info()->dimension(0) * (1.f / scale_x)))); + const int scale_x = num_elems_processed_per_iteration; _input = input; _output = output; @@ -80,6 +79,8 @@ void CLGEMMTranspose1xWKernel::configure(const ICLTensor *input, ICLTensor *outp // Configure window Window win = calculate_max_window(*input->info(), Steps(num_elems_processed_per_iteration)); + ARM_COMPUTE_ERROR_ON_MSG((win.x().end() / scale_x) == 0, "Transposed shape would be 0 in the second dimension"); + AccessWindowHorizontal input_access(input->info(), 0, num_elems_processed_per_iteration); AccessWindowTranspose output_access(output->info(), 0, 0, num_elems_processed_per_iteration, 1, scale_x, 1.f / scale_x); |