aboutsummaryrefslogtreecommitdiff
path: root/ethosu/vela/high_level_command_to_npu_op.py
diff options
context:
space:
mode:
authorRaul Farkas <raul.farkas@arm.com>2023-05-09 09:09:17 +0100
committerFredrik Svedberg <fredrik.svedberg@arm.com>2023-06-16 12:26:19 +0000
commit3e7157ba59f12aa0d277a9b3a7cb3f8a19267338 (patch)
treea06a40060fc1d9a44b3688fea916b61d26c56a65 /ethosu/vela/high_level_command_to_npu_op.py
parent3b64f068db4ea8e954a1b472de169dd423b8c049 (diff)
downloadethos-u-vela-3e7157ba59f12aa0d277a9b3a7cb3f8a19267338.tar.gz
MLBEDSW-7315: Add support for AvgPool with stride_width > 3
* Convert AvgPool with stride_width > 3 and Valid padding to Conv2D to optimize it to run on NPU. Change-Id: I06ab412357f0b09b1498f9019a9d1963a324ad34 Signed-off-by: Raul Farkas <raul.farkas@arm.com>
Diffstat (limited to 'ethosu/vela/high_level_command_to_npu_op.py')
-rw-r--r--ethosu/vela/high_level_command_to_npu_op.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/ethosu/vela/high_level_command_to_npu_op.py b/ethosu/vela/high_level_command_to_npu_op.py
index 9526bd50..79ac3929 100644
--- a/ethosu/vela/high_level_command_to_npu_op.py
+++ b/ethosu/vela/high_level_command_to_npu_op.py
@@ -308,6 +308,14 @@ def use_zero_point_0(ps, tens: Tensor, is_ifm_tensor: bool) -> bool:
if tens.dtype == DataType.int32 and is_ifm_tensor:
return True
if ps.primary_op.rounding_mode == RoundingMode.AwayZero:
+ if (
+ ps.primary_op.original_type == Op.AvgPool
+ and ps.primary_op.type == Op.Conv2DBias
+ and ps.primary_op.attrs.get("padding", None) == Padding.VALID
+ ):
+ # Force zero point to 0 for AveragePool operators converted to a Conv2DBias with rounding away from
+ # zero.
+ return True
if ps.primary_op.original_type == Op.ResizeBilinear and ps.primary_op.type == Op.DepthwiseConv2DBias:
# Force zero point to 0 for ResizeBilinear operators converted to a DepthwiseConv with rounding away from
# zero. This is because the reference kernel ignores the zero points.