-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
Prepare 0.20.0 release #7828
Prepare 0.20.0 release #7828
Conversation
Pull Request Test Coverage Report for Build 2073151203
💛 - Coveralls |
releasenotes/notes/0.20/Operation-abstract-base-class-99f46180c7ddaa6b.yaml
Outdated
Show resolved
Hide resolved
…asses In Qiskit#7762 the scheduling passes in the transpiler were completely rewritten to operate in a model where scheduling and alignment happen as metadata on the circuit until a single padding pass is called to adapt the circuit to fit the scheduling metadata. As part of that rework a new pass ConstrainedReschedule was added to perform the alignment for measurement as well as all instructions via this new mechanism. However the way the migration was done was a breaking change and should have been additive so that we can deprecate the old path in 0.21 and allow users time to migrate to the new approach. Additionally as part of Qiskit#7762 the AlignMeasures pass was deprecated and its implementation was replaced with just returning an equivalent ConstraintedReschedule pass. This was problematic for two reasons though, first the two passes were not equivalent and this a breaking change and second it violates the deprecation policy. For the breaking change the AlignMeasures and ConstrainedReschedule while performing the same function do it in a different manner. I assume the deprecation was done this way because AlignMeasures is incompatible with the While the scheduling pass changes were also breaking to do the migration gracefully would require duplicating their functionality and deprecating the old This is also violating the deprecation policy which is defined here: https://qiskit.org/documentation/contributing_to_qiskit.html#deprecation-policy as the alternative wasn't available for a release prior to the start of the deprecation (see 2a in the above link). This commit adds back the breaking classes and renames the new scheduling classes ALAPScheduleAnalysis and ASAPScheduleAnalysis to differentiate them from the previous implementations. This also reverts the deprecation and changes to the AlignMeasures pass until we can do it correctly at the appropriate time. The class is restored to its previous state but instead a PendingDeprecationWarning is now emitted to warn users of the pending deprecation and removal of the class. Additionally, a warning in the release notes will be added as part of Qiskit#7828 to document the incompatibility with the new behavior of the scheduling and alignment passes.
I've finished a first pass through the release notes. I still need to review it all again both for typos I likely introduced and any notes I might have missed (along with waiting for the rest of the pending release PRs to merge). |
Ok, I'll finish going through them now - I have a few changes from the ones I looked at last night, but nothing major (obviously). |
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 left my suggested changes in mtreinish#17
releasenotes/notes/0.20/Operation-abstract-base-class-99f46180c7ddaa6b.yaml
Outdated
Show resolved
Hide resolved
…asses (#7835) * Revert deprecation and breaking changes of scheduling and alignment passes In #7762 the scheduling passes in the transpiler were completely rewritten to operate in a model where scheduling and alignment happen as metadata on the circuit until a single padding pass is called to adapt the circuit to fit the scheduling metadata. As part of that rework a new pass ConstrainedReschedule was added to perform the alignment for measurement as well as all instructions via this new mechanism. However the way the migration was done was a breaking change and should have been additive so that we can deprecate the old path in 0.21 and allow users time to migrate to the new approach. Additionally as part of #7762 the AlignMeasures pass was deprecated and its implementation was replaced with just returning an equivalent ConstraintedReschedule pass. This was problematic for two reasons though, first the two passes were not equivalent and this a breaking change and second it violates the deprecation policy. For the breaking change the AlignMeasures and ConstrainedReschedule while performing the same function do it in a different manner. I assume the deprecation was done this way because AlignMeasures is incompatible with the While the scheduling pass changes were also breaking to do the migration gracefully would require duplicating their functionality and deprecating the old This is also violating the deprecation policy which is defined here: https://qiskit.org/documentation/contributing_to_qiskit.html#deprecation-policy as the alternative wasn't available for a release prior to the start of the deprecation (see 2a in the above link). This commit adds back the breaking classes and renames the new scheduling classes ALAPScheduleAnalysis and ASAPScheduleAnalysis to differentiate them from the previous implementations. This also reverts the deprecation and changes to the AlignMeasures pass until we can do it correctly at the appropriate time. The class is restored to its previous state but instead a PendingDeprecationWarning is now emitted to warn users of the pending deprecation and removal of the class. Additionally, a warning in the release notes will be added as part of #7828 to document the incompatibility with the new behavior of the scheduling and alignment passes. * More release note fixes * Fix lint * Fix docs * Fix doc whitespace * Update dynamical decoupling release note * Copy docstrings from pre-refactor to fix docs build * Add back test coverage for legacy scheduling and alignment passes * Update releasenotes/notes/update-instruction-alignment-passes-ef0f20d4f89f95f3.yaml Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> * Fix release notes * Rename base scheduler class in legacy path This commit renames the BaseScheduler class in the legacy scheduling path to BaseSchedulerTransform to differentiate it from the new path scheduling paths. It also documents the pending deprecation in all the legacy scheduling passes to point people to the new scheduling workflow. * Rename DynamicalDecouplingPadding to PadDynamicalDecoupling Co-authored-by: Naoki Kanazawa <nkanazawa1989@gmail.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
To prepare for the upcoming 0.20.0 release this commit moves all the release notes into a 0.20 subdirectory to keep them separate from future development notes post-release. It also adds a release note with the prelude section providing the high level overview of the release. When this merges it should be the commit used to tag the 0.20.0 release.
Co-authored-by: Ali Javadi-Abhari <ajavadia@users.noreply.github.com>
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.
Looks good to me. After the merging of the PR I'd made, I was happy with all the release notes already.
fixes: | ||
- | | ||
Fixed support in :func:`~qiskit.compiler.transpile` for passing a | ||
:class:`~.InstructionScheduleMap` to object to the underlying |
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.
:class:`~.InstructionScheduleMap` to object to the underlying | |
:class:`~.InstructionScheduleMap` object to the underlying |
--- | ||
features: | ||
- | | ||
Added a new gate gate class :class:`~qiskit.circuit.library.XXMinusYYGate` |
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.
Added a new gate gate class :class:`~qiskit.circuit.library.XXMinusYYGate` | |
Added a new gate class :class:`~qiskit.circuit.library.XXMinusYYGate` |
only updates the property set of the pass manager, in which new property set | ||
``node_start_time`` is created there to perform these operation on nodes | ||
scheduled on the absolute time. This new workflow is both more efficient and can correct | ||
for additional timing constraints exposed by a backend. |
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.
only updates the property set of the pass manager, in which new property set | |
``node_start_time`` is created there to perform these operation on nodes | |
scheduled on the absolute time. This new workflow is both more efficient and can correct | |
for additional timing constraints exposed by a backend. | |
only update the property set of the pass manager, specifically new property set item | |
``node_start_time``, which holds the absolute start time of each opnode. A separate | |
:class:`~.TransformationPass` such as :class:`~.PadDelay` is subsequently used | |
to apply scheduling to the DAG. This new workflow is both more efficient and can | |
correct for additional timing constraints exposed by a backend. |
|
||
For those who are creating custom :class:`~.PassManager` objects that involve | ||
circuit scheduling you will need to adjust your :class:`~.PassManager` | ||
to include insert one of the :class:`~.BasePadding` passes (currently |
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.
to include insert one of the :class:`~.BasePadding` passes (currently | |
to insert one of the :class:`~.BasePadding` passes (currently |
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.
Just some minor typos, otherwise LGTM!
Added a new method :meth:`~qiskit.quantum_info.SparsePauliOp.equiv` to the | ||
:class:`~.SparsePauliOp` class for testing the equivalence of a | ||
:class:`~.SparsePauliOp` with another :class:`.SparsePauliOp` object. | ||
Unlike the ``==`` operator which compares operartors element-wise, |
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.
Unlike the ``==`` operator which compares operartors element-wise, | |
Unlike the ``==`` operator which compares operators element-wise, |
--- | ||
features: | ||
- | | ||
Added a new gate gate class :class:`~qiskit.circuit.library.XXMinusYYGate` |
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.
Added a new gate gate class :class:`~qiskit.circuit.library.XXMinusYYGate` | |
Added a new gate class :class:`~qiskit.circuit.library.XXMinusYYGate` |
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.
Ah I just saw Kevin beat me to this correction 😄
:mod:`qiskit.circuit.library` has been removed. It was originally deprecated in the | ||
0.16.0 release. Instead the :class:`~qiskit.circuit.library.GMS` class should be used, as | ||
this allows you to create an equivalent 2 qubit MS gate in addition to | ||
an MSGate for any number of qubits. |
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.
an MSGate for any number of qubits. | |
an ``MSGate`` for any number of qubits. |
The :class:`~qiskit.transpiler.passes.DenseLayout` pass has a new keyword | ||
argument on its constructor, ``target``. This argument is used to specify a | ||
:class:`~qiskit.transpiler.Target` object representing the compilation | ||
target for the pass. If it is specified it superscedes the other arguments |
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'm not a 100% sure, but is there a c
too much?
target for the pass. If it is specified it superscedes the other arguments | |
target for the pass. If it is specified it supersedes the other arguments |
Thanks for the suggestions, given the CI time required to apply them I'm going to save these changes fix them manually in the hosted version when we push the release and open up a follow up PR after the release is tagged and backport them for 0.20.1 |
Summary
To prepare for the upcoming 0.20.0 release this commit moves all the
release notes into a 0.20 subdirectory to keep them separate from future
development notes post-release. It also adds a release note with the
prelude section providing the high level overview of the release. When
this merges it should be the commit used to tag the 0.20.0 release.
Details and comments