-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Ensure we run VF2PostLayout when needed in optimization level 1
This commit fixes an issue where we were incorrectly not running VF2PostLayout in the one case where it should be run. Optimization level 1 is more involved than higher optimization levels because for backwards compatibility it runs multiple different passes to try and find a perfect layout, first starting with TrivialLayout, then VF2Layout, and only if those 2 fail to find a perfect match do we run SabreLayout (or DenseLayout and StochasticSwap if control flow are present). We only should run VF2PostLayout if we're running the heuristic layout pass. However, when we integrated routing into SabreLayout the checking for whether we found a pefect layout in the layout stage stopped working as expected. To fix this issue a new flag is added to the CheckMap pass to specify an alternative property set field to store the results of the check in. The underlying issue was that the property set field between the earlier check that we found a perfect layout and the later check whether we should run a standalone routing pass. To fix this the new flag is used to spearate the results from the multiple CheckMap calls. and then we only condition the VF2PostLayout condition on the results of the perfect layout check and not the later routing check. Fixes #9936
- Loading branch information
Showing
6 changed files
with
281 additions
and
49 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
23 changes: 23 additions & 0 deletions
23
releasenotes/notes/vf2postlayout-fix-16bb54d9bdf3aaf6.yaml
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
--- | ||
features: | ||
- | | ||
The :class:~.CheckMap` transpiler pass has a new keyword argument on its | ||
constructor, ``property_set_field``. This argument can be used to specify | ||
a field in the property set to store the results of the analysis. | ||
Previously, it was only possible to store the result in the field | ||
``"is_swap_mapped"`` (which is the default). This enables you to store the | ||
result of multiple instances of the pass in a :class:`~.PassManager` in | ||
different fields. | ||
fixes: | ||
- | | ||
Fixed an issue in :func:`~.transpile` with ``optimization_level=1`` (as | ||
well as in the preset pass managers returned by | ||
:func:`~.generate_preset_pass_manager` and :func:`~.level_1_pass_manager`) | ||
where previously if the ``routing_method`` and ``layout_method`` arguments | ||
were not set and no control flow operations were present in the circuit | ||
then in cases where routing was required the | ||
:class:`~.VF2PostLayout` transpiler pass would not be run. This was the | ||
opposite of the expected behavior because :class:`~.VF2PostLayout` is | ||
intended to find a potentially better performing layout after a heuristic | ||
layout pass and routing are run. | ||
Fixed `#9936 <https://github.com/Qiskit/qiskit-terra/issues/9936>`__ |
This file contains 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
This file contains 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
Oops, something went wrong.