diff options
author | Gian Marco Iodice <gianmarco.iodice@arm.com> | 2021-04-30 09:55:26 +0100 |
---|---|---|
committer | Gian Marco Iodice <gianmarco.iodice@arm.com> | 2021-05-07 09:32:18 +0000 |
commit | 3ae6580d26cee273b750e69b5c06f6efa4caf3fb (patch) | |
tree | ab15b9910023b336c1f5cd0c8267b0d862f298cd /src/runtime/CL | |
parent | c2bed95d3833bfedc88997494fcb8e3e1b01b0e0 (diff) | |
download | ComputeLibrary-3ae6580d26cee273b750e69b5c06f6efa4caf3fb.tar.gz |
Update heuristic for CLConvolutionLayer
- Call direct convolution when filter size height is greater than or equal to 5
Resolves COMPMID-4439
Change-Id: Ie8ccccc0629eb4c74bd62c4bb4ced47f6898a945
Signed-off-by: Gian Marco Iodice <gianmarco.iodice@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5589
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/runtime/CL')
-rw-r--r-- | src/runtime/CL/functions/CLConvolutionLayer.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/runtime/CL/functions/CLConvolutionLayer.cpp b/src/runtime/CL/functions/CLConvolutionLayer.cpp index aaabbe0cfc..1082a475b2 100644 --- a/src/runtime/CL/functions/CLConvolutionLayer.cpp +++ b/src/runtime/CL/functions/CLConvolutionLayer.cpp @@ -224,21 +224,20 @@ ConvolutionMethod CLConvolutionLayer::get_convolution_method(const ITensorInfo * { return ConvolutionMethod::DIRECT; } - if((weights->dimension(idx_h) > 7) && (input->dimension(idx_c) >= output->dimension(idx_c)) && (CLDirectConvolutionLayer::validate(input, weights, nullptr, output, conv_info, act_info))) + if(gpu_target == GPUTarget::G71) { - if(gpu_target == GPUTarget::G71) + if((weights->dimension(idx_h) > 7) && (input->dimension(idx_c) >= output->dimension(idx_c)) + && (CLFFTConvolutionLayer::validate(input, weights, nullptr, output, conv_info, act_info, enable_fast_math))) { - if(CLFFTConvolutionLayer::validate(input, weights, nullptr, output, conv_info, act_info, enable_fast_math)) - { - return ConvolutionMethod::FFT; - } - else - { - return ConvolutionMethod::GEMM; - } + return ConvolutionMethod::FFT; + } + } + else + { + if((weights->dimension(idx_h) >= 5) && (input->dimension(idx_c) >= output->dimension(idx_c)) && (CLDirectConvolutionLayer::validate(input, weights, nullptr, output, conv_info, act_info))) + { + return ConvolutionMethod::DIRECT; } - - return ConvolutionMethod::DIRECT; } if(input->dimension(idx_c) < 16) { |