JackWeiw commented on PR #16679:
URL: https://github.com/apache/tvm/pull/16679#issuecomment-1985227683

   > I agree, it sounds like this is an issue where there's an insufficient 
condition, rather than a missing rewrite rule. If the test case is run without 
this PR, but providing the knowledge that `x > 0`, (`TestCase(tvm.te.min(0, 
fld(x + 3, 4) * 4 - 1), 0, x>0)` in the unit tests), then it passes.
   > 
   > There's a couple different ways that assumptions can be added to the 
function.
   > 
   > 1. Using the variable as a dynamic shape.  This is already applied, but 
isn't a strong enough assumption to perform the simplifications you want.  In 
your script, this would provide `m >= 0`, while the simplification requires `m 
> 0`.  Since TIR allows a zero-dimension axis, this is the correct default 
behavior.
   > 2. Adding `T.assume(m > 0)` to the function.  Using `T.assume` provides 
additional information, but has undefined behavior if the assumption is 
violated.
   > 3. Adding `T.Assert(m > 0, "Some error message here")` to the function.  
Using `T.Assert` performs a runtime validation, raising an exception if the 
assertion is violated.  All compile-time simplifications after the `T.Assert` 
may assume that the assumption holds.
   > 
   > I'd recommend using `T.Assert`, and only falling back to the `T.assume` if 
there are performance reasons to avoid the runtime validation.
   
   Thanks for your suggestion! Yes without this PR, but add preconfition x>0 
both TestCases in Min and Max are passed.
   BTW, could please give me one more hint on how to add `T.Assert(m > 0, "Some 
error message here")` automatically to all the function in an IRModule if there 
are symbolic shapes ? I am not very familiar with writing a pass, your kindly 
suggestion would help me a lot ! 
   BTW, should i close this PR or should i keep the added testcase by adding 
precondition` x>0`  `TestCase(tvm.te.min(0, fld(x + 3, 4) * 4 - 1), 0, x > 0) ` 
and cancel the change in rewrite_simplify ?
     


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to