You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by GitBox <gi...@apache.org> on 2021/10/06 20:20:52 UTC

[GitHub] [tvm] comaniac commented on a change in pull request #9207: [TOPI] Fix compiing batch_matmul and dense when two args are the same tensor

comaniac commented on a change in pull request #9207:
URL: https://github.com/apache/tvm/pull/9207#discussion_r723643217



##########
File path: python/tvm/relay/op/strategy/generic.py
##########
@@ -715,8 +715,14 @@ def dilation2d_strategy(attrs, inputs, out_type, target):
     return strategy
 
 
+def maybe_copy_tensor_b(tensor_a, tensor_b):
+    if tensor_a == tensor_b:
+        return te.compute(tensor_a.shape, lambda *ind: tensor_a[ind], tag="tensor_b_copy")
+    return tensor_b
+
+
 # matmul
-def wrap_compute_matmul(topi_compute, need_auto_scheduler_layout=False):
+def wrap_compute_matmul(topi_compute, need_auto_scheduler_layout=False, need_tensor_b_copy=True):

Review comment:
       `need_tensor_b_copy` seems a bit confusing. If tensor a and tensor b are identical, then we could say either copy tensor a or copy tensor b. Maybe `copy_input_if_the_same` or `copy_input_if_identical`, or `copy_identical_input`?

##########
File path: python/tvm/relay/op/strategy/generic.py
##########
@@ -715,8 +715,14 @@ def dilation2d_strategy(attrs, inputs, out_type, target):
     return strategy
 
 
+def maybe_copy_tensor_b(tensor_a, tensor_b):

Review comment:
       I'm wondering if we could have a better name (with docstring) for this utility. Something like `copy_if_identical`?

##########
File path: python/tvm/topi/cuda/batch_matmul.py
##########
@@ -93,6 +93,8 @@ def schedule_batch_matmul(cfg, outs):
     def _schedule(cfg, op):
         C = op.output(0)
         A, B = s[C].op.input_tensors
+        if B.op.tag == "tensor_b_copy":
+            s[B].compute_inline()

Review comment:
       Could we use like `B.op.input_tensors[0] == A` to judge whether it is a copy instead of leveraging the tag? IMHO, it's safe to assume that B is a copy of A if we can reach to A from B in batch_matmul/dense compute.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@tvm.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org