Skip to content
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

Merged
merged 22 commits into from
Mar 31, 2022
Merged

Prepare 0.20.0 release #7828

merged 22 commits into from
Mar 31, 2022

Conversation

mtreinish
Copy link
Member

@mtreinish mtreinish commented Mar 28, 2022

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

  • Wait for the remaining open 0.20 PRs to merge or be deferred
  • Finish editing and fixing release notes

@mtreinish mtreinish added the on hold Can not fix yet label Mar 28, 2022
@mtreinish mtreinish added this to the 0.20 milestone Mar 28, 2022
@mtreinish mtreinish requested a review from a team as a code owner March 28, 2022 21:56
@mtreinish mtreinish changed the title Prepare 0.20.0 release [WIP] Prepare 0.20.0 release Mar 28, 2022
@coveralls
Copy link

coveralls commented Mar 28, 2022

Pull Request Test Coverage Report for Build 2073151203

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • 3 unchanged lines in 1 file lost coverage.
  • Overall coverage decreased (-0.005%) to 83.696%

Files with Coverage Reduction New Missed Lines %
qiskit/pulse/library/waveform.py 3 89.36%
Totals Coverage Status
Change from base Build 2073149689: -0.005%
Covered Lines: 53970
Relevant Lines: 64483

💛 - Coveralls

tox.ini Outdated Show resolved Hide resolved
mtreinish added a commit to mtreinish/qiskit-core that referenced this pull request Mar 30, 2022
…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.
@mtreinish
Copy link
Member Author

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).

@jakelishman
Copy link
Member

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).

Copy link
Member

@jakelishman jakelishman left a 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

mergify bot added a commit that referenced this pull request Mar 31, 2022
…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.
@mtreinish mtreinish added Changelog: None Do not include in changelog and removed on hold Can not fix yet labels Mar 31, 2022
@mtreinish mtreinish changed the title [WIP] Prepare 0.20.0 release Prepare 0.20.0 release Mar 31, 2022
Copy link
Member

@jakelishman jakelishman left a 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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
: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`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Added a new gate gate class :class:`~qiskit.circuit.library.XXMinusYYGate`
Added a new gate class :class:`~qiskit.circuit.library.XXMinusYYGate`

Comment on lines +7 to +10
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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
to include insert one of the :class:`~.BasePadding` passes (currently
to insert one of the :class:`~.BasePadding` passes (currently

Copy link
Contributor

@Cryoris Cryoris left a 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,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Added a new gate gate class :class:`~qiskit.circuit.library.XXMinusYYGate`
Added a new gate class :class:`~qiskit.circuit.library.XXMinusYYGate`

Copy link
Contributor

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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
Copy link
Contributor

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?

Suggested change
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

@mtreinish
Copy link
Member Author

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

@mergify mergify bot merged commit a2d13f5 into Qiskit:main Mar 31, 2022
@mtreinish mtreinish deleted the prepare-0.20 branch April 25, 2022 21:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changelog: None Do not include in changelog
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants