You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by lu...@apache.org on 2022/06/28 15:13:02 UTC
[tvm] branch fix-avg-pool-offload created (now 0c790422da)
This is an automated email from the ASF dual-hosted git repository.
lukhut pushed a change to branch fix-avg-pool-offload
in repository https://gitbox.apache.org/repos/asf/tvm.git
at 0c790422da [microNPU] Fix offloading incompatible average pool
This branch includes the following new commits:
new 0c790422da [microNPU] Fix offloading incompatible average pool
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[tvm] 01/01: [microNPU] Fix offloading incompatible average pool
Posted by lu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
lukhut pushed a commit to branch fix-avg-pool-offload
in repository https://gitbox.apache.org/repos/asf/tvm.git
commit 0c790422daeaa2871dee816be06dca8f92e6a7a6
Author: Luke Hutton <lu...@arm.com>
AuthorDate: Thu May 26 13:28:01 2022 +0000
[microNPU] Fix offloading incompatible average pool
Fixes offloading a few corner cases of average pooling. Specifically
not offloading nn.avg_pool2d when:
* The attribute count_include_pad=True
* Padding exceeds the dimensions [3, 3, 4, 4]
* The pool size is greater than [8, 8] when the pool uses padding
Change-Id: I7be546e28ebe1f17482f3ed3cee56996a71bfcd1
---
python/tvm/relay/op/contrib/ethosu.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/python/tvm/relay/op/contrib/ethosu.py b/python/tvm/relay/op/contrib/ethosu.py
index 806bf6dce2..ed9aa7505d 100644
--- a/python/tvm/relay/op/contrib/ethosu.py
+++ b/python/tvm/relay/op/contrib/ethosu.py
@@ -589,10 +589,17 @@ class MaxPool2DParams:
return False
if not check_batch_size(self.ifm):
return False
+ if self.count_include_pad:
+ return False
if not check_padding(self.padding, self.padding_bounds):
return False
if not check_pool_shape(self.pool_shape):
return False
+ # Averge pool with padding only supports 1 <= pool_shape <= 8
+ if list(self.padding) != [0, 0, 0, 0] and (
+ self.pool_shape[0] > 8 or self.pool_shape[1] > 8
+ ):
+ return False
return True
@@ -613,7 +620,7 @@ class AvgPool2DParams:
composite_name = "ethos-u.avgpool2d"
# The hardware only supports padding upto the numbers as follows
- padding_bounds = [127, 127, 128, 128]
+ padding_bounds = [3, 3, 4, 4]
def __init__(self, func_body: Call):
clip = None
@@ -632,6 +639,7 @@ class AvgPool2DParams:
self.pool_shape = attrs.pool_size
self.strides = attrs.strides
self.padding = attrs.padding
+ self.count_include_pad = attrs.count_include_pad
self.activation = clip
self.pooling_type = "AVG"