loopy
loopy copied to clipboard
Statement instance order and lex order map
NOTE: This PR has been subsumed by #479, which targets main. This PR still targets new-dependency-and-nest-constraint-semantics-development.
What's changed:
Last merged PR (parent of this PR):
- Generate a pairwise schedule for each provided pair of statements. Ignore concurrency.
This PR:
- Generate three pairwise schedules for each provided pair of statements which handle intra-thread, intra-group, and global ordering.
- Generate three lex order maps (LOM), one for each pairwise schedule
- A LOM represents a lexicographic ordering as a map from each point in the ordering to every point occurring later in the ordering.
- The LOM for the intra-thread case is a standard big-endian lexicographic ordering. The LOMs for the intra-group and global cases begin as a standard ordering, and then certain pairs are removed.
- Using each pairwise schedule and its corresponding LOM, create a statement instance ordering, which maps each statement instance to all statement instances that occur later.
Note: The use of SIOs for dependency checking is not part of this PR.
Moved to github from old gitlab MR.
Previous (upstream) PR in chain Next (downstream) MR in chain
Subsumed by #479.
To cut down on noise in my email, I'm unsubscribing from this PR. When it next needs my attention, please @-mention me or hit the "request review" button. Otherwise, I may not see your messages in a timely manner.
@inducer This is ready for review. My initial priority is finding any bugs/functional problems that would affect correctness and downstream PRs. Second priorities are code style, time complexity, etc.
Thank you!
@inducer I made the changes we discussed yesterday (returning a named tuple)