diff options
author | Gian Marco Iodice <gianmarco.iodice@arm.com> | 2017-10-03 13:17:02 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:35:24 +0000 |
commit | ece307bd365ce0be0be7168fdafa95671480dbbb (patch) | |
tree | b02a3906e787a96e3ffb6146b36e7fcf34243de5 | |
parent | 6f669f039fb74675b858bc3703295609a6a3e122 (diff) | |
download | ComputeLibrary-ece307bd365ce0be0be7168fdafa95671480dbbb.tar.gz |
COMPMID-556 - Fix ConvolutionLayer test
Change-Id: I8035cfd2b7fd62bd9f79f2a7d4b59f3e2bbe9163
Reviewed-on: http://mpd-gerrit.cambridge.arm.com/89988
Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
-rw-r--r-- | src/runtime/NEON/functions/NEConvolutionLayer.cpp | 5 | ||||
-rw-r--r-- | tests/validation/fixtures/ConvolutionLayerFixture.h | 14 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/runtime/NEON/functions/NEConvolutionLayer.cpp b/src/runtime/NEON/functions/NEConvolutionLayer.cpp index 40862fc2d8..f34f497436 100644 --- a/src/runtime/NEON/functions/NEConvolutionLayer.cpp +++ b/src/runtime/NEON/functions/NEConvolutionLayer.cpp @@ -190,8 +190,9 @@ void NEConvolutionLayer::configure(const ITensor *input, const ITensor *weights, { if(_are_weights_reshaped) { - mat_weights_cols = weights_info.num_kernels(); - mat_weights_rows = weights->info()->dimension(0) / 4 + (_has_bias ? 1 : 0); + const unsigned int transpose_width = 16 / input->info()->element_size(); + mat_weights_cols = weights_info.num_kernels(); + mat_weights_rows = weights->info()->dimension(0) / transpose_width + (_has_bias ? 1 : 0); } else { diff --git a/tests/validation/fixtures/ConvolutionLayerFixture.h b/tests/validation/fixtures/ConvolutionLayerFixture.h index 434291b58e..fe206997b8 100644 --- a/tests/validation/fixtures/ConvolutionLayerFixture.h +++ b/tests/validation/fixtures/ConvolutionLayerFixture.h @@ -88,7 +88,12 @@ protected: { // Check if its a "fully connected" convolution const bool is_fully_connected_convolution = (output_shape.x() == 1 && output_shape.y() == 1); - const bool is_optimised = std::is_same<FunctionType, NEConvolutionLayer>::value && NEScheduler::get().cpu_info().CPU >= CPUTarget::ARMV7 && data_type == DataType::F32; + bool is_optimised = false; +#if defined(__arm__) + is_optimised = std::is_same<FunctionType, NEConvolutionLayer>::value && NEScheduler::get().cpu_info().CPU == CPUTarget::ARMV7 && data_type == DataType::F32; +#elif defined(__aarch64__) + is_optimised = std::is_same<FunctionType, NEConvolutionLayer>::value && NEScheduler::get().cpu_info().CPU >= CPUTarget::ARMV8 && data_type == DataType::F32; +#endif /* defined(__arm__) || defined(__aarch64__) */ reshaped_weights_shape.collapse(3); @@ -143,7 +148,12 @@ protected: if(!reshape_weights) { const bool is_fully_connected_convolution = (output_shape.x() == 1 && output_shape.y() == 1); - const bool is_optimised = std::is_same<FunctionType, NEConvolutionLayer>::value && NEScheduler::get().cpu_info().CPU >= CPUTarget::ARMV7 && data_type == DataType::F32; + bool is_optimised = false; +#if defined(__arm__) + is_optimised = std::is_same<FunctionType, NEConvolutionLayer>::value && NEScheduler::get().cpu_info().CPU == CPUTarget::ARMV7 && data_type == DataType::F32; +#elif defined(__aarch64__) + is_optimised = std::is_same<FunctionType, NEConvolutionLayer>::value && NEScheduler::get().cpu_info().CPU >= CPUTarget::ARMV8 && data_type == DataType::F32; +#endif /* defined(__arm__) || defined(__aarch64__) */ TensorShape tmp_weights_shape(weights_shape); SimpleTensor<T> tmp_weights(tmp_weights_shape, data_type, 1, fixed_point_position); |