aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadik Armagan <sadik.armagan@arm.com>2019-11-22 12:52:28 +0000
committerKevin May <kevin.may@arm.com>2019-11-23 14:37:32 +0000
commite131a0b179babb03bf9e372a145fa464f916ff81 (patch)
tree9aa7100950077b83287df2e896e8208c469b3423
parent3a93dfa9af49188910a715689c9fb7fc381fa03d (diff)
downloadarmnn-e131a0b179babb03bf9e372a145fa464f916ff81.tar.gz
IVGCVSW-4158 FP16 Mobilenet V1 and V2 30% regression on ArmNN on Mate20
* Enable FP16 mixed precision for Android Q Signed-off-by: Sadik Armagan <sadik.armagan@arm.com> Change-Id: I5ddb94b13385e1fec39e4407dffc8e4bc6b8d64a
-rw-r--r--Android.mk1
-rw-r--r--src/backends/cl/workloads/ClPooling2dWorkload.cpp7
2 files changed, 4 insertions, 4 deletions
diff --git a/Android.mk b/Android.mk
index f8dcb60fe5..d755d20201 100644
--- a/Android.mk
+++ b/Android.mk
@@ -235,6 +235,7 @@ endif # ARMNN_REF_ENABLED == 1
ifeq ($(Q_OR_LATER),1)
LOCAL_CFLAGS += \
+ -DARMNN_MIXED_PRECISION_FP16_POOLING \
-DBOOST_NO_AUTO_PTR
endif # PLATFORM_VERSION == Q or later
diff --git a/src/backends/cl/workloads/ClPooling2dWorkload.cpp b/src/backends/cl/workloads/ClPooling2dWorkload.cpp
index bf899977d6..8400977b51 100644
--- a/src/backends/cl/workloads/ClPooling2dWorkload.cpp
+++ b/src/backends/cl/workloads/ClPooling2dWorkload.cpp
@@ -44,14 +44,13 @@ ClPooling2dWorkload::ClPooling2dWorkload(
// enable fp_mixed_precision for the the FP16 cases that
// accumulation reaches a limit beyond which there is no more increment of the value
bool fpMixedPrecision = false;
+#ifdef ARMNN_MIXED_PRECISION_FP16_POOLING
if (input.info()->data_type() == arm_compute::DataType::F16
- && m_Data.m_Parameters.m_PoolType == PoolingAlgorithm::Average
- && m_Data.m_Parameters.m_PoolWidth >= 100
- && input.info()->dimension(3) >= 5
- && input.info()->dimension(2) * input.info()->dimension(1) >= 3000)
+ && m_Data.m_Parameters.m_PoolType == PoolingAlgorithm::Average)
{
fpMixedPrecision = true;
}
+#endif
arm_compute::PoolingLayerInfo layerInfo = BuildArmComputePoolingLayerInfo(m_Data.m_Parameters, fpMixedPrecision);