aboutsummaryrefslogtreecommitdiff
path: root/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h
diff options
context:
space:
mode:
authorGian Marco Iodice <gianmarco.iodice@arm.com>2021-07-06 13:19:41 +0100
committerGeorgios Pinitas <georgios.pinitas@arm.com>2021-07-06 16:38:19 +0000
commit5e281814c5110724d99fe8ee64bdf42ef2c31bce (patch)
tree008a57c80f5b846265b0339f6e3a9f7876fa8922 /tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h
parent900289936c458eff95499e0a0eaba989a27aaa4d (diff)
downloadComputeLibrary-5e281814c5110724d99fe8ee64bdf42ef2c31bce.tar.gz
Fix manual LOOP_UNROLLING
The issue is caused by the number of iterations passed to LOOP_UNROLLING. When we use the manual LOOP_UNROLLING, the number of iterations must be less than or equal to 128. To overcome this problem, we create a utility function to check if any of the critical iterations (kernel dimensions) are beyond that limit. If so, the utility function, disable the manual loop unrolling. Resolves COMPMID-4609 Change-Id: I7221c967609e462a5abd1cbb74e2a120f344fcb3 Signed-off-by: Gian Marco Iodice <gianmarco.iodice@arm.com> Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5913 Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h')
-rw-r--r--tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h26
1 files changed, 14 insertions, 12 deletions
diff --git a/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h b/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h
index 0e02ae28ca..ddbab7fe13 100644
--- a/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h
+++ b/tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h
@@ -113,6 +113,13 @@ public:
target_to_use = &_target;
}
+ add_padding_x({ &_src, &_biases }, _data_layout);
+ add_padding_x({ &_weights }, _data_layout, true);
+ if(!_in_place)
+ {
+ add_padding_x({ &_target }, _data_layout);
+ }
+
// Create Depthwise Convolution configure function
_dwc.configure(&_src, &_weights, &_biases, target_to_use, _pad_stride_info, _depth_multiplier, _act_info, _dilation);
@@ -124,12 +131,6 @@ public:
void allocate_and_run_target()
{
- add_padding_x({ &_src, &_weights, &_biases }, _data_layout);
- if(!_in_place)
- {
- add_padding_x({ &_target }, _data_layout);
- }
-
// Allocate tensors
_src.allocator()->allocate();
_weights.allocator()->allocate();
@@ -317,6 +318,10 @@ public:
_biases = create_tensor<TensorType>(_biases_shape, _data_type, 1, QuantizationInfo(), _data_layout);
_target = create_tensor<TensorType>(TensorShape(), _data_type, 1, QuantizationInfo(), _data_layout);
+ add_padding_x({ &_src, &_biases, &_target }, _data_layout);
+ add_padding_x({ &_weights }, _data_layout, true);
+ add_padding_y({ &_src, &_target }, _data_layout);
+
// Create Depthwise Convolution configure function
const ConvolutionInfo info
{
@@ -332,9 +337,6 @@ public:
void allocate_and_run_target()
{
- add_padding_x({ &_src, &_weights, &_biases, &_target }, _data_layout);
- add_padding_y({ &_src, &_target }, _data_layout);
-
// Allocate tensors
_src.allocator()->allocate();
_weights.allocator()->allocate();
@@ -482,6 +484,9 @@ public:
_conv_info, _depth_multiplier, _act_info, _dilation
};
+ add_padding_x({ &_src, &_biases, &_target }, _data_layout);
+ add_padding_x({ &_weights }, _data_layout, _export_to_cl_image); // Don't add left padding if cl image will be used
+
// Create Depthwise Convolution configure function
_dwc.configure(&_src, &_weights, &_biases, target_to_use, dwc_info, conv_kernel_info);
@@ -493,9 +498,6 @@ public:
void allocate_and_run_target()
{
- add_padding_x({ &_src, &_biases, &_target }, _data_layout);
- add_padding_x({ &_weights }, _data_layout, _export_to_cl_image); // Don't add left padding if cl image will be used
-
// Allocate tensors
_src.allocator()->allocate();
_weights.allocator()->allocate();