-
Notifications
You must be signed in to change notification settings - Fork 21
Combined ILP & RP Graph Transformations #148
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
Merged
Quincunx271
merged 28 commits into
CSUS-LLVM:master
from
Quincunx271:feature-occupancy-preserving-ilp-gt
Oct 24, 2021
Merged
Combined ILP & RP Graph Transformations #148
Quincunx271
merged 28 commits into
CSUS-LLVM:master
from
Quincunx271:feature-occupancy-preserving-ilp-gt
Oct 24, 2021
Conversation
This file contains hidden or 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
a898671
to
4294980
Compare
9b1a1d5
to
61258ba
Compare
The graph transformation edges break the SeqListScheduler.
The previous UpdateSetupForScheduling(...) function did too much and also clobbered useful information. This changes the code from calling that after each graph transformations pass to having each pass declare what updates it needs, performing only those updates. Removed behavior from removing the call to UpdateSetupForScheduling: - No longer re-allocating all of the info inside each SchedInstruction - No longer re-setting (redundantly) all of the info in each SchedInstruction - No longer recomputing lower and upper bounds. If we have already computed that, we don't want to lose the previously-computed values
This reverts commit 432758d.
Rather than hardcoding the application before or after the heuristic, make it a runtime option. Applying graph transformations before the heuristic has the advantage that the heuristic now has a simpler problem to solve, and thus is more likely to find an optimal solution. Furthermore, the lower bound will be tighter. Applying graph transformations after the heuristic has the advantage that we don't waste time running graph transformations for problems that are already easy; if the heuristic scheduler proves the schedule optimal, we skip graph transformations altogether. Another option is possible: we could do the heuristic first, then if the schedule is not known to be optimal, run graph transformations (as in GT after heuristic), but then re-run the heuristic so that we can potentially skip enumeration. This option is NOT implemented.
The SeqListScheduler is unlikely to find an optimal scheduler, so it is almost certainly better to do graph transformations "before heuristic", meaning---in this case---before the lower bound calculation.
Enables calculating the amount of time these operations took.
Often, it was confusing the direction of the added edge. This fixes it by reading the from/to directly from the added edge.
b46c109
to
c0c5b25
Compare
35b4970
to
9abde54
Compare
9abde54
to
7eba7b3
Compare
The previous conditions could remove an edge (x, y) even if that edge was the reason for the critical path between x and y. These new conditions only consider the path through the newly added edge to avoid that issue.
high_resolution_clock is system_clock in libstdc++.
jrbyrnes
reviewed
Aug 25, 2021
jrbyrnes
reviewed
Aug 25, 2021
jrbyrnes
reviewed
Aug 25, 2021
B&B is unlikely to find significant benefit for extremely large regions, once the exponentially larger search space is taken into account. As such, it makes sense to have a knob to disable this scheduling if the region is too large.
The previous name was too generic. This change renames the function to clearly specify what it does.
Any last thoughts on this PR, or is it ready to submit? |
Looks fine to me |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Implement RP-preserving ILP graph transformations. Also implement the ability to choose where graph transformations are applied (before or after the heuristic).
This is intended to bring all of my current state of graph transformations into master.