Skip to content

Release 1.9.0: Improved Qiskit Integration

Compare
Choose a tag to compare
@burgholzer burgholzer released this 25 Jun 00:53
· 1111 commits to main since this release
108dd52

This release brings improved and tighter integration with Qiskit.
First of all, QMAP now natively supports mapping to Qiskit Backends (such as FakeLondon, etc.).
In addition, QMAP now returns a Qiskit QuantumCircuit that explicitly contains layout information (how the original circuit's logical qubits are initially assigned to the device's physical ones) and measurements (indicating the output permutation of logical qubits).

from mqt import qmap
from qiskit import QuantumCircuit
from qiskit.providers.fake_provider import FakeLondon

qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.cx(0, 2)
qc.measure_all()

qc_mapped, results = qmap.compile(qc, arch=FakeLondon())

This allows to conveniently verify the correctness of the resulting circuits using our mqt.qcec tool.

from mqt import qcec

result = qcec.verify(qc, qc_mapped)
print(result.equivalence())

Finally, QMAP is now also capable of parsing calibration data/properties from Qiskit Backends or from Qiskit BackendProperties/Target objects themselves. While this information is currently not used in the mapping itself, it serves as a preparation for future developments.
When providing such properties, an architecture need not be defined necessarily as it is deduced from the calibration data.

from mqt import qmap
from qiskit import QuantumCircuit
from qiskit.providers.fake_provider import FakeLondon

qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.cx(0, 2)
qc.measure_all()

props = FakeLondon().properties()
qc_mapped, results = qmap.compile(qc, arch=None, calibration=props)

What's Changed

Full Changelog: v1.8.2...v1.9.0