aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Lamberti <derek.lamberti@arm.com>2019-11-13 09:29:38 +0000
committerMatteo Martincigh <matteo.martincigh@arm.com>2019-11-15 11:01:14 +0000
commit60538ada2b90704abcf6473144639103d80287a5 (patch)
tree7e5b198bae2e7ef1eb51858bb353d395cac014f9
parentf4c502f54cc978c1b34f3beaf6b9cc0cd1ecc7e8 (diff)
downloadarmnn-60538ada2b90704abcf6473144639103d80287a5.tar.gz
Only enable mixed precision FP16 pooling for Android Q
Change-Id: Ic2c0ce7a7a99bbc430b7d6da272825540772e01d Signed-off-by: Derek Lamberti <derek.lamberti@arm.com>
-rw-r--r--Android.mk8
-rw-r--r--src/backends/cl/workloads/ClPooling2dWorkload.cpp7
2 files changed, 11 insertions, 4 deletions
diff --git a/Android.mk b/Android.mk
index 749c4117cf..6daefef0dc 100644
--- a/Android.mk
+++ b/Android.mk
@@ -307,6 +307,14 @@ LOCAL_CFLAGS += \
-DARMNNREF_ENABLED
endif # ARMNN_REF_ENABLED == 1
+# Only enable on Android P
+ifeq (($(P_OR_LATER),1))
+ ifeq (($(Q_OR_LATER),0))
+LOCAL_CFLAGS += \
+ -DARMNN_MIXED_PRECISION_FP16_POOLING
+ endif # Q_OR_LATER=0
+endif # P_OR_LATER=1
+
ifeq ($(Q_OR_LATER),1)
LOCAL_CFLAGS += \
-DBOOST_NO_AUTO_PTR
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);