You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
>>>fromtvmimporttir>>>int_1, bool_t=tir.const(1), tir.const(True)
>>>s= {int_1, bool_t}
~tvm/python/tvm/tir/expr.pyin__nonzero__(self)
171def__nonzero__(self):
172raiseValueError(
-->173"Cannot use and / or / not operator to Expr, hint: "174+"use tvm.tir.all / tvm.tir.any instead"175 )
ValueError: Cannotuseand/or/notoperatortoExpr, hint: usetvm.tir.all/tvm.tir.anyinstead
After some inspection, I guess I could elaborate on the steps leading to this issue:
During the construction of s, the __hash__ of int_1 and bool_t are compared, which are both 1.
Since they have the same hash value, Python needs to further consider whether the two objects are the same before finishing set construction, which in turn concerns the __eq__ operator.
__eq__ of tir.IntImm calls _ffi_api._OpEQ, which returns a tir.EQ(int_1, bool_t) given that constant folding doesn’t happen.
Python wants to convert the this tir.EQ to bool, which calls __bool__ of tir.EQ that inherits __bool__ of tir.ExprOp, which calls __nonzero__, which finally raises ValueError.
I’m not sure whether this problem can be solved through simple fix since it involves the design of the operator sugar of TIR in Python-level.
The text was updated successfully, but these errors were encountered:
To reproduce the problem:
After some inspection, I guess I could elaborate on the steps leading to this issue:
s
, the__hash__
ofint_1
andbool_t
are compared, which are both1
.__eq__
operator.__eq__
oftir.IntImm
calls_ffi_api._OpEQ
, which returns atir.EQ(int_1, bool_t)
given that constant folding doesn’t happen.tir.EQ
tobool
, which calls__bool__
oftir.EQ
that inherits__bool__
oftir.ExprOp
, which calls__nonzero__
, which finally raisesValueError
.I’m not sure whether this problem can be solved through simple fix since it involves the design of the operator sugar of TIR in Python-level.
The text was updated successfully, but these errors were encountered: