wrongtest commented on PR #11287:
URL: https://github.com/apache/tvm/pull/11287#issuecomment-1135062872
> usage of `DetectIterMapPadded` in our analysis
Try merge `DetectIterMapPadded` and `DetectIterMap` into the same interface,
and replace option `require_bijective` with a new enum `IterMapLevel` with
three alternatives:
- Bijective
for original behavior on `require_bijective=true`
- Surjective
for original behavior on `require_bijective=false`
- Injective
for behavior of `DetectIterMapPadded`
The https://github.com/apache/tvm/pull/11235 brings great way to analyze
iteration form like `(x + 7) // 16` with padding. The surjective checking of
`DetectIterMap` is used many where (like region cover check after schedule
step), however, it can not leverage this analysis now, it is checked to take no
padding predicate.
I think actually, as an example, though `(x + 7) // 16` is rewritten into a
"padded" iteration form, we could still prove the mapping is surjective, since
the left and right padding is no more than the largest divisor by how we pad
it. If we extent `CheckMapping` rules carefully, we may be able to distinguish
that
- `(x + 7) // 16` -> surjective
- this is the access index form in my original failed case
- `(x + 7) % 16` -> surjective [0, 16) if x's extent is larger than 16
- (`(x + 7) // 16`, `(x + 7) % 16`) -> non-surjective
So from my perspective it would be great if we have a uniform interface and
share same padding based analysis. Ideally `padding_predicate` is not affected
for IndexMap functionalities, and it should not introduce false positives in
bijective/surjective checking.
--
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]