Skip to content
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

[Fix][TIR] UnifyThreadBinding creating unit loop with annotation #14588

Merged

Conversation

MasterJH5574
Copy link
Contributor

@MasterJH5574 MasterJH5574 commented Apr 11, 2023

This PR fixes a behavior of the UnifyThreadBinding pass which (at one place) assumes a return value is always a ForNode, which is not right.

To be more specific, when a thread-binding loop has an annotation, the current behavior is assuming that the post-recursive-mutation value is also a ForNode, and apply the previous annotation directly to the new loop. However, the post-recursive-mutation value is also possibly not a ForNode. In this case, the current behavior is incorrect.

This PR creates a new unit-length loop in this case to preserve the annotation.

Thanks Bohan for catching this issue.

Co-authored-by: Bohan Hou spectrometerh@gmail.com

@tvm-bot
Copy link
Collaborator

tvm-bot commented Apr 11, 2023

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 by @-ing them in a comment.

Generated by tvm-bot

This PR fixes a behavior of the UnifyThreadBinding pass which (at one
place) assumes a return value is always a ForNode, which is not right.

To be more specific, when a thread-binding loop has an annotation,
the current behavior is assuming that the post-recursive-mutation value
is also a ForNode, and apply the previous annotation directly to the new
loop. However, the post-recursive-mutation value is also possibly not a
ForNode. In this case, the current behavior is incorrect.

This PR creates a new unit-length loop in this case to preserve the
annotation.

Thanks Bohan for catching this issue.

Co-authored-by: Bohan Hou <spectrometerh@gmail.com>
@MasterJH5574 MasterJH5574 force-pushed the tvm-dev/2023-04-11-unify-thread-binding-ann branch from f535608 to b30a55b Compare April 11, 2023 14:14
MasterJH5574 added a commit to mlc-ai/relax that referenced this pull request Apr 11, 2023
…notation (apache/tvm#14588) (#187)

This PR fixes a behavior of the UnifyThreadBinding pass which (at one
place) assumes a return value is always a ForNode, which is not right.

To be more specific, when a thread-binding loop has an annotation, the
current behavior is assuming that the post-recursive-mutation value is
also a ForNode, and apply the previous annotation directly to the new
loop. However, the post-recursive-mutation value is also possibly not a
ForNode. In this case, the current behavior is incorrect.

This PR creates a new unit-length loop in this case to preserve the
annotation.

Thanks Bohan for catching this issue.

Co-authored-by: Bohan Hou <spectrometerh@gmail.com>
@MasterJH5574
Copy link
Contributor Author

@tvm-bot rerun

@tqchen tqchen merged commit 40af75b into apache:main Apr 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants