-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
JIT: Add 3-opt implementation for improving upon RPO-based layout #103450
Merged
Merged
Changes from 9 commits
Commits
Show all changes
48 commits
Select commit
Hold shift + click to select a range
5813e1a
Implement k-opt for non-EH methods
amanasifkhalid 3f4e749
Enable for methods with EH
amanasifkhalid da291af
Merge branch 'main' into k-opt-layout
amanasifkhalid 699714b
Add comments
amanasifkhalid 0849f76
Style
amanasifkhalid e223927
Merge branch 'main' into k-opt-layout
amanasifkhalid 044b332
Only one iteration for now; try to reduce TP cost
amanasifkhalid f0e7f6b
Remove initial layout cost calculation
amanasifkhalid 41efb9b
Conditionalize EH checks
amanasifkhalid 5b7a85e
Merge from main
amanasifkhalid 94c2272
Add priority queue impl
amanasifkhalid 0081d9b
wip
amanasifkhalid 4700e65
Fix lambda capture
amanasifkhalid cabacf9
Merge branch 'main' into k-opt-layout
amanasifkhalid ebb7e6a
Consider forward conditional jumps
amanasifkhalid 4eb4471
Remove debug print
amanasifkhalid 0175b18
Consider backward jumps; find more initial candidates
amanasifkhalid bbc28df
Revert irrelevant changes
amanasifkhalid 2e507be
Missed a few
amanasifkhalid 9ed6452
Add JitDump check
amanasifkhalid 40fc6bc
Add more candidate edges when reordering
amanasifkhalid 0b8e830
Merge branch 'main' into k-opt-layout
amanasifkhalid a3b7392
Don't add duplicate edges to cutPoints
amanasifkhalid d468a8a
Consider each candidate edge at most once
amanasifkhalid 9cc1860
Merge from main
amanasifkhalid 3ee5c42
Don't factor cold branches into cost calculatioN
amanasifkhalid 5c134b5
Merge from main
amanasifkhalid d6fea98
Remove used candidates set
amanasifkhalid 872b431
Revert "Remove used candidates set"
amanasifkhalid fadaeba
Tweak cold block finding
amanasifkhalid e17b169
Refactor into ThreeOptLayout class
amanasifkhalid eea003f
Reorder EH regions
amanasifkhalid 96ef576
Fix completely cold try regions (clean replay)
amanasifkhalid 8d95f49
Small cleanup
amanasifkhalid 5388e9e
Add currEHRegion member
amanasifkhalid 5e90c89
Only move blocks within same region after 3-opt
amanasifkhalid 1cecc72
Merge from main
amanasifkhalid b7a0a03
Cleanup
amanasifkhalid 6ad7541
Comments
amanasifkhalid a26be54
EdgeCmp tie-breaker
amanasifkhalid a1b8661
Comment feedback; replace 'usedCandidates' set with FlowEdge flag
amanasifkhalid ebbb973
Reframe cost model as maximal score problem
amanasifkhalid 7d9734f
Small refactor
amanasifkhalid a2b3e16
Simplify adding new candidate edges
amanasifkhalid 88d5389
Guess number of hot blocks when allocating arrays
amanasifkhalid 4ab9f17
Skip reordering if too few blocks
amanasifkhalid ed39074
Add another check for too few blocks
amanasifkhalid f2eb773
JITDUMP msg
amanasifkhalid File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
I think the root of the TP cost is here -- we want to avoid having to search for possible cut points.
One approach is to just pick randomly, but I think we can do better for now. Roughly speaking in the pass above we should find all blocks that are either not just before their optimal successor and/or not just after their optimal successor.
We can rank these by the difference in the current vs optimal score. Then greedily pick the worst, that gives the first cut point. For the second cut point you can pick the best pred for the first cut point's current next block, or the best succ for the current pred of the first cut point's ideal successor. That is, if we have
So one idea is to keep 3 values for each block: its min score, current score, and best score (lower is better). Order the blocks by current-min. Pick of the best as the first split, and then see if any of the next few provide a good second split.
Likely though this ends up needing a priority queue or similar as once we accept an arrangement we need to update some of the costings...