Skip to content

Commit

Permalink
Merge branch 'main' into expose-circuit-data
Browse files Browse the repository at this point in the history
  • Loading branch information
raynelfss authored Aug 21, 2024
2 parents 1a037ab + 6107799 commit 3fb546e
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 29 deletions.
4 changes: 4 additions & 0 deletions qiskit/transpiler/instruction_durations.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from qiskit.circuit import Barrier, Delay, Instruction, ParameterExpression
from qiskit.circuit.duration import duration_in_dt
from qiskit.providers import Backend
from qiskit.providers.backend import BackendV2
from qiskit.transpiler.exceptions import TranspilerError
from qiskit.utils.units import apply_prefix

Expand Down Expand Up @@ -75,6 +76,9 @@ def from_backend(cls, backend: Backend):
TranspilerError: If dt and dtm is different in the backend.
"""
# All durations in seconds in gate_length
if isinstance(backend, BackendV2):
return backend.target.durations()

instruction_durations = []
backend_properties = backend.properties()
if hasattr(backend_properties, "_gates"):
Expand Down
4 changes: 2 additions & 2 deletions qiskit/transpiler/passes/routing/stochastic_swap.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ class StochasticSwap(TransformationPass):
@deprecate_func(
since="1.3",
removal_timeline="in the 2.0 release",
additional_msg="The `StochasticSwap` transpilation pass is a suboptimal "
"routing algorithm and has been superseded by the :class:`.SabreSwap` pass.",
additional_msg="The StochasticSwap transpilation pass is a suboptimal "
"routing algorithm and has been superseded by the SabreSwap pass.",
)
def __init__(self, coupling_map, trials=20, seed=None, fake_run=False, initial_layout=None):
"""StochasticSwap initializer.
Expand Down
58 changes: 31 additions & 27 deletions releasenotes/notes/deprecate-StochasticSwap-451f46b273602b7b.yaml
Original file line number Diff line number Diff line change
@@ -1,45 +1,49 @@
---
deprecations_transpiler:
- |
Deprecated ``StochasticSwap`` which has been superseded by :class:`.SabreSwap`.
Deprecated :class:`.StochasticSwap` which has been superseded by :class:`.SabreSwap`.
If the class is called from the transpile function, the change would be, for example::
from qiskit import transpile
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler import CouplingMap
from qiskit.providers.fake_provider import GenericBackendV2
qc = QuantumCircuit(4)
qc.h(0)
qc.cx(0, range(1, 4))
qc.measure_all()
cmap = CouplingMap.from_heavy_hex(3)
backend = GenericBackendV2(num_qubits=cmap.size(), coupling_map=cmap)
tqc = transpile(
circuit,
routing_method="stochastic",
layout_method="dense",
seed_transpiler=12342,
target=GenericBackendV2(
num_qubits=27,
coupling_map=MUMBAI_CMAP,
).target,
)
qc,
routing_method="stochastic",
layout_method="dense",
seed_transpiler=12342,
target=backend.target
)
to::
tqc = transpile(
circuit,
routing_method="sabre",
layout_method="sabre",
seed_transpiler=12342,
target=GenericBackendV2(
num_qubits=27,
coupling_map=MUMBAI_CMAP,
).target,
)
While for a pass mananager change::
qr = QuantumRegister(4, "q")
qc = QuantumCircuit(qr)
qc,
routing_method="sabre",
layout_method="sabre",
seed_transpiler=12342,
target=backend.target
)
While for a pass manager, the change would be::
passmanager = PassManager(StochasticSwap(coupling, 20, 13))
new_qc = passmanager.run(qc)
to::
qr = QuantumRegister(5, "q")
qc = QuantumCircuit(qr)
passmanager = PassManager(SabreSwap(target, "basic"))
passmanager = PassManager(SabreSwap(backend.target, "basic"))
new_qc = passmanager.run(qc)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
fixes:
- |
Fixed a bug where :meth:`.InstructionDurations.from_backend` did not work for :class:`.BackendV2` backends.
Fixed `#12760 <https://github.com/Qiskit/qiskit/issues/12760>`.
8 changes: 8 additions & 0 deletions test/python/transpiler/test_instruction_durations.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

from qiskit.circuit import Delay, Parameter
from qiskit.providers.fake_provider import Fake27QPulseV1
from qiskit.providers.fake_provider import GenericBackendV2
from qiskit.transpiler.exceptions import TranspilerError
from qiskit.transpiler.instruction_durations import InstructionDurations
from test import QiskitTestCase # pylint: disable=wrong-import-order
Expand Down Expand Up @@ -92,3 +93,10 @@ def test_fail_if_get_unbounded_duration_with_unit_conversion_when_dt_is_not_prov
parameterized_delay = Delay(param, "s")
with self.assertRaises(TranspilerError):
InstructionDurations().get(parameterized_delay, 0)

def test_from_backend_with_backendv2(self):
"""Test if `from_backend()` method allows using BackendV2"""
backend = GenericBackendV2(num_qubits=4, calibrate_instructions=True, seed=42)
inst_durations = InstructionDurations.from_backend(backend)
self.assertEqual(inst_durations, backend.target.durations())
self.assertIsInstance(inst_durations, InstructionDurations)

0 comments on commit 3fb546e

Please sign in to comment.