tvm-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] [tvm] yanggg1997 opened a new pull request #8917: [Relay] Add a non-recursive LetNode VisitExpr_ for LabelOps Pass to avoid stack overflow
Date Fri, 03 Sep 2021 04:50:08 GMT

yanggg1997 opened a new pull request #8917:
URL: https://github.com/apache/tvm/pull/8917


   When I use the relay VM to compile a graph that contains a huge for loop, the LabelOps
pass encountered stack overflow. This problem is caused by the LabelOps applies the default
`ExprMutator::VisitExpr_(const LetNode* op)` function to visit the LetNode, which is a recursive
function.
   
   Here is a small testing case:
   ``` python3
   data = relay.var("data", tvm.ir.TensorType(shape = (relay.Any(),5,2), dtype = "float32"))
   shape = relay.op.shape_of(data)
   
   for i in range(1000):
       tmp = relay.op.ones(shape, "float32")
       shape = relay.op.shape_of(tmp)
   res = shape
   
   mod = tvm.IRModule()
   mod["main"] = relay.Function([data], res)
   ```
   In this case, I set the for loop with 1000 times, note that the specific number of times
that will cause the LabelOps stack overflow may vary in different machine environment.
   
   To fix this bug, I added a non-recursive LetNode VisitExpr_ in the Class LabelOpsMutator.


-- 
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



Mime
View raw message