-
Notifications
You must be signed in to change notification settings - Fork 3.7k
[MetaSchedule] Fix tune_tir crash with ScheduleError in RewriteParallelVectorizeUnroll #18547
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
base: main
Are you sure you want to change the base?
Conversation
…elVectorizeUnroll This patch fixes issue apache#18423 where meta_schedule.tune_tir crashes during initial population sampling when RewriteParallelVectorizeUnroll postprocessor encounters blocks that violate compact dataflow requirements. The crash occurred when: - A block reads and writes to the same buffer - RewriteParallelVectorizeUnroll tries to parallelize/vectorize these loops - ScheduleError is thrown and propagates through parallel_for_dynamic Solution: - Added exception handling in RewriteParallelVectorizeUnroll::Apply to catch ScheduleError and skip problematic blocks instead of crashing - Added exception handling in ThreadedTraceApply::Apply to catch exceptions from postprocessors and treat them as normal failures This makes the tuning process more robust by gracefully handling schedule errors instead of crashing the entire tuning session.
Summary of ChangesHello @Dayuxiaoshui, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly improves the stability and resilience of the Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
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.
Code Review
This pull request addresses a crash in meta_schedule.tune_tir by introducing exception handling for tir::ScheduleError. The changes in RewriteParallelVectorizeUnroll::Apply correctly catch scheduling errors, log them, and skip problematic blocks, which enhances the robustness of the tuning process. Similarly, ThreadedTraceApply::Apply is updated to handle exceptions from postprocessors, treating them as failures without crashing. The changes are logical and directly address the issue described. I have one suggestion for src/meta_schedule/utils.h to refactor the error handling logic for better code clarity and maintainability.
Previously, catching ScheduleError and continuing could leave the schedule partially mutated if operations failed mid-sequence. This change ensures that when a ScheduleError occurs, the postprocessor returns false immediately, causing the candidate to be discarded safely rather than continuing with a potentially corrupted schedule state. This matches the error handling pattern used in ThreadedTraceApply::Apply and addresses the safety concern about partial mutations.
This patch fixes issue #18423 where meta_schedule.tune_tir crashes during initial population sampling when RewriteParallelVectorizeUnroll postprocessor encounters blocks that violate compact dataflow requirements.
The crash occurred when:
Solution:
This makes the tuning process more robust by gracefully handling schedule errors instead of crashing the entire tuning session.