Skip to content

Releases: munich-quantum-toolkit/qmap

Release 2.0.0

13 Jan 16:03
d12f182

Choose a tag to compare

What's Changed

This major release marks the first big addition to QMAP that goes beyond quantum circuit mapping: (Optimal) Clifford Circuit Synthesis. See https://mqtqmap.readthedocs.io/en/latest/Synthesis.html for further details.

✨ New Features

  • Optimal Clifford circuit synthesis based on

    S. Schneider, L. Burgholzer, and R. Wille. A SAT Encoding for Optimal Clifford Circuit Synthesis. In Asia and South Pacific Design Automation Conference (ASP-DAC), 2023. (arXiv:2208.11713)

  • QMAP can now natively handle circuits with more than 128 qubits by dropping some technical restrictions and modernizing the project structure.

♿ Accessibility

  • ⚙️ Push-button solution for quantum circuit mapping and Clifford circuit synthesis
  • 🐧/🍎/🏁 pre-built Python wheels for Linux, macOS (incl. Apple Silicon), and Windows
  • 🐍 Python 3.7 to 3.11 support
  • ⚛️ Seamless integration with Qiskit

🎨 Code Quality

  • 🗃️ follow the LLVM coding standards for C++
  • 🐍 follows best practices for developing Python projects and packages from the popular Scikit-HEP project
  • 🧪 extensive unit tests for C++ and Python
  • 🪝 pre-commit checks

📝 Project documentation hosted at ReadTheDocs.

  • 🚀 Quickstart and User Guide
  • 🧑‍💻 Development Guide
  • 👥 Contributing Guide
  • 📄 API documentation

Full Changelog: v1.12.1...v2.0.0

Release 1.12.1: Add missing macOS x86 wheels

15 Dec 11:54
bf4a2ed

Choose a tag to compare

What's Changed

Due to a misconfiguration, x86 wheels for macOS have not been built and distributed for the latest releases.
With this release, all wheels are available again.

Full Changelog: v1.12.0...v1.12.1

Release 1.12.0: Infrastructure Modernisation and Cleanup

11 Dec 19:00
ea4cf50

Choose a tag to compare

What's Changed

This release updates many underlying aspects of the QMAP infrastructure to the latest best practices within the Munich Quantum Toolkit (MQT). See the respective PRs for more detailed descriptions:

Full Changelog: v1.11.2...v1.12.0

Release 1.11.2: Bugfix Release

09 Nov 10:20
1cc4741

Choose a tag to compare

This release mainly drops the requirement on retworkx and uses the (newly renamed) rustworkx library.
This follows suit with the recent QCEC release and, in combination, allows to use the most recent version of Qiskit in combination with both tools.

What's Changed

Full Changelog: v1.11.1...v1.11.2

Release 1.11.1: Bugfix Release

29 Oct 08:37
9555fad

Choose a tag to compare

This release mainly consists of a couple of bugfixes related to Qiskit compatibility (#165) and overall compilation requirements (#159).

What's Changed

Full Changelog: v1.11.0...v1.11.1

Release 1.11.0: Subarchitectures, Docs, and Internals

21 Oct 08:21
65b2f27

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.10.1...v1.11.0

Release 1.10.1: Infrastructure Updates

07 Sep 20:35
1cf5adc

Choose a tag to compare

This release mostly updates or introduces internal code quality measures.
It also updates Z3 to the latest version and introduces an option to disable the inclusion of measurements in the returned circuits.

What's Changed

Full Changelog: v1.10.0...v1.10.1

Release 1.10.0: LogicBlocks Integration

01 Sep 11:26
0c30f6b

Choose a tag to compare

This release marks the addition of the LogicBlocks submodule in QMAP as a drop-in replacement for Z3 that abstracts away most of the technical aspects related to Z3 (see #79 for more details on this change).

Please report any bugs that you encounter by creating an issue. Make sure to check whether the problem also occurs using previous versions (specifically v1.9.1). This helps in quickly isolating the problem.

Release 1.9.1: Dependency Update and Python 3.11 Wheels

30 Aug 15:42
c1b13f9

Choose a tag to compare

This minor release contains almost only dependency updates. The most notable change is the addition of wheels for Python 3.11 (introduced by #93).
This also marks the last release before the LogicBlocks project (https://github.com/IsFairy/LogicBlocks) is being added to QMAP in #79.

What's Changed

Full Changelog: v1.9.0...v1.9.1

Release 1.9.0: Improved Qiskit Integration

25 Jun 00:53
108dd52

Choose a tag to compare

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