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"