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 2022/11/10 12:45:55 UTC

[GitHub] [tvm] wzh99 opened a new pull request, #13348: [TIR][Arith] Fix divisor checking in `TryConstFold`

wzh99 opened a new pull request, #13348:
URL: https://github.com/apache/tvm/pull/13348

   This PR fixes the checking of devisor in constant folding of `tir::Div`. If the expression is `0 / 0`, previous implementation directly folds it into `0` without checking the divisor. It seems that `fb->value != 0` should not be in the `if` condition, but should be checked in the body instead. After this fix, folding `0 / 0` leads to an assertion failure instead of `0`. 
   
   Here is a piece of simple testing code:`tir.FloatImm('float32', 0.) / tir.FloatImm('float32', 0.)`. And the following is the error report (which is expected):
   ```
   Traceback (most recent call last):
     File "/Users/tvm-bug/bug_divide_zero.py", line 5, in <module>
       tir.PrimFunc([], tir.Evaluate(tir.FloatImm('float32', 0.) / tir.FloatImm('float32', 0.)))
     File "/Users/wzh/tvm-dev/python/tvm/tir/expr.py", line 102, in __truediv__
       return _generic.divide(self, other)
     File "/Users/wzh/tvm-dev/python/tvm/topi/generic_op_impl.py", line 83, in _tensor_bop_impl
       return orig_bop(lhs, rhs)
     File "/Users/wzh/tvm-dev/python/tvm/tir/generic.py", line 106, in divide
       return _ffi_api._OpDiv(lhs, rhs, span)  # type: ignore
     File "/Users/wzh/tvm-dev/python/tvm/_ffi/_ctypes/packed_func.py", line 237, in __call__
       raise get_last_ffi_error()
   tvm._ffi.base.TVMError: Traceback (most recent call last):
     [bt] (7) 8   ???                                 0x00007ff7b51f0cf0 0x0 + 140701872360688
     [bt] (6) 7   _ctypes.cpython-38-darwin.so        0x000000010affdfb7 ffi_call_unix64 + 79
     [bt] (5) 6   libtvm.dylib                        0x000000011df22ace TVMFuncCall + 62
     [bt] (4) 5   libtvm.dylib                        0x000000011cbb8f36 tvm::runtime::PackedFuncObj::Extractor<tvm::runtime::PackedFuncSubObj<void tvm::runtime::TypedPackedFunc<tvm::PrimExpr (tvm::PrimExpr, tvm::PrimExpr, tvm::Span)>::AssignTypedLambda<tvm::$_5>(tvm::$_5, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)::'lambda'(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)> >::Call(tvm::runtime::PackedFuncObj const*, tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) + 1078
     [bt] (3) 4   libtvm.dylib                        0x000000011cb9fd24 tvm::div(tvm::PrimExpr, tvm::PrimExpr, tvm::Span) + 132
     [bt] (2) 3   libtvm.dylib                        0x000000011c1926ce tvm::runtime::Optional<tvm::PrimExpr> tvm::arith::TryConstFold<tvm::tir::Div>(tvm::PrimExpr, tvm::PrimExpr) + 1934
     [bt] (1) 2   libtvm.dylib                        0x000000011c172c39 tvm::runtime::detail::LogFatal::Entry::Finalize() + 89
     [bt] (0) 1   libtvm.dylib                        0x000000011df3fd98 tvm::runtime::Backtrace() + 24
     File "/Users/wzh/tvm-dev/src/arith/const_fold.h", line 240
   TVMError: 
   ---------------------------------------------------------------
   An error occurred during the execution of TVM.
   For more information, please see: https://tvm.apache.org/docs/errors.html
   ---------------------------------------------------------------
   
     Check failed: fb->value != 0 (0 vs. 0) : Divide by zero
   ```
   
   cc @masahi 


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


[GitHub] [tvm] tvm-bot commented on pull request #13348: [TIR][Arith] Fix divisor checking in `TryConstFold`

Posted by GitBox <gi...@apache.org>.
tvm-bot commented on PR #13348:
URL: https://github.com/apache/tvm/pull/13348#issuecomment-1310228709

   <!---bot-comment-->
   
   Thanks for contributing to TVM! Please refer to the contributing guidelines https://tvm.apache.org/docs/contribute/ for useful information and tips. Please request code reviews from [Reviewers](https://github.com/apache/incubator-tvm/blob/master/CONTRIBUTORS.md#reviewers) by @-ing them in a comment.
   
   <!--bot-comment-ccs-start-->
    * cc @Hzfengsy, @junrushao <sub>See [#10317](https://github.com/apache/tvm/issues/10317) for details</sub><!--bot-comment-ccs-end-->
   
   <sub>Generated by [tvm-bot](https://github.com/apache/tvm/blob/main/ci/README.md#github-actions)</sub>


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


[GitHub] [tvm] masahi merged pull request #13348: [TIR][Arith] Fix divisor checking in `TryConstFold`

Posted by GitBox <gi...@apache.org>.
masahi merged PR #13348:
URL: https://github.com/apache/tvm/pull/13348


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