Fix nondeterminacy and a couple other issues in Circuit.insert#6997
Closed
daxfohl wants to merge 9 commits intoquantumlib:mainfrom
Closed
Fix nondeterminacy and a couple other issues in Circuit.insert#6997daxfohl wants to merge 9 commits intoquantumlib:mainfrom
daxfohl wants to merge 9 commits intoquantumlib:mainfrom
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #6997 +/- ##
==========================================
- Coverage 98.17% 98.16% -0.01%
==========================================
Files 1087 1087
Lines 94722 94795 +73
==========================================
+ Hits 92992 93060 +68
- Misses 1730 1735 +5 ☔ View full report in Codecov by Sentry. |
Collaborator
Author
|
Closing for now due to breaking changes. Replacing with #7043. Can revisit later. |
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
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.
Fixes #6711, and fixes #6986 edge cases.
Instead of inserting one operation at a time, it first batches up ops by moment compatibility (see docstring for
_group_into_moment_compatible). This way, the insert algorithm can first check whether any op in the batch requires a new moment to be created, and if so, preemptively create that moment before placing any of the operations from that batch. This allows it to avoid the nondeterminacy caused by the one-by-one algorithm, where one op inserted at moment[k] can inadvertently get pushed forward when a later op inserts a new moment at k.Tests added for all documented edge cases.
Copying the comment from #6986:
If we want to remove the behavior change to
test_7and/ortest_1due to backward compatibility, just mention it either here or in the issue. The PR can be adapted to that in just a couple lines.