-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Relax affine #353
Relax affine #353
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can introduce stuff that breaks affine semantics by doing that, so we should be very careful. We may need to revisit this with an analysis that checks which ops generated a dimension (so affine.for
and affine.parallel
iterators would be legal for instance, along with linalg.index
, and at a later point also check for affinity of expressions to allow linear combinations of indices).
I agree. I can imagine that this only works as long as you only do very limited things in the realm of the affine dialect, like lowering to another dialect. Other kinds of analysis and transformations might e.g. try to get the origin of the |
In the spirit of what I said above, I already tried to contain the changes as much as possible by only modifying the affine.if and by making sure that I'm not skipping any other checks that were there before. |
It would take some time but upstream has made some moves to disconnect Linalg from affine (e.g. with the tiling interface: there are operations that are loops but have neither an affine schedule nor affine data access patterns, but can still be tiled). Something like an "affinity preserving" interface would then make sense. |
No description provided.