Releases: cda-tum/mqt-qmap
Release 1.11.2: Bugfix Release
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
- ⬆️🪝 update pre-commit hooks by @pre-commit-ci in #166
- Bump extern/qfr from
78a3608
to64aa806
by @dependabot in #167 - ⬆️ Replace
retworkx
withrustworkx
by @dependabot in #164
Full Changelog: v1.11.1...v1.11.2
Release 1.11.1: Bugfix Release
This release mainly consists of a couple of bugfixes related to Qiskit compatibility (#165) and overall compilation requirements (#159).
What's Changed
- ⬆️🪝 update pre-commit hooks by @pre-commit-ci in #158
- 🐛 Fix Qiskit compatibility by @burgholzer in #165
- Bump extern/LogicBlocks from
58c0daa
to89d81d2
by @dependabot in #162 - Bump pypa/cibuildwheel from 2.11.1 to 2.11.2 by @dependabot in #161
- Fix compile issues by @EliasLF in #159
Full Changelog: v1.11.0...v1.11.1
Release 1.11.0: Subarchitectures, Docs, and Internals
What's Changed
- ✨ Determining Optimal Sub-Architectures by @pehamTom in #106 based on https://arxiv.org/abs/2210.09321
- 🐍 Python Testing by @burgholzer in #110
- 📝 Proper Documentation by @pehamTom, @EliasLF and @burgholzer in #114, #148, #149, #151, #152, #156
- ⬆️ Support for qiskit-terra
0.22.0
by @dependabot in #145 - 🐛 temporary workaround for retworkx failure by @burgholzer in #142
- 👷 Streamline Z3 Configuration by @burgholzer in #112
- 🔧 Codecov Config Update by @burgholzer in #137, #150, #154, #155
- 🚨 Further flake8 checks by @burgholzer in #118
- 📦 Leaner source distribution by @burgholzer in #119
New Contributors
- @pre-commit-ci made their first contribution in #115
- @pehamTom made their first contribution in #114
- @EliasLF made their first contribution in #148
Full Changelog: v1.10.1...v1.11.0
Release 1.10.1: Infrastructure Updates
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
- 📝 Initialize Documentation on ReadTheDocs by @burgholzer in #98
- 🐛 Fix Editable Installations by @burgholzer in #100
- ✨ Add pre-commit configuration by @burgholzer in #101
- 🔧 Proper Versioning in Deploy CI by @burgholzer in #104
- 🔧 Add in-progress cancellation to CI workflows by @burgholzer in #108
- 🔧 Update CodeQL configuration by @burgholzer in #107
- ⬆️ Update Z3 from version
4.8.17
to4.11.2
by @burgholzer in #109 - ✨ Optionally disable measurements by @burgholzer in #103
Full Changelog: v1.10.0...v1.10.1
Release 1.10.0: LogicBlocks Integration
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
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
- Update qiskit-terra requirement from ~=0.20.2 to >=0.20.2,<0.22.0 by @dependabot in #81
- Bump extern/qfr from
2c0c3d6
to091d869
by @dependabot in #82, #83, #86, #88, #91, #94, #95 - Bump pypa/cibuildwheel from 2.7.0 to 2.9.0 by @dependabot in #84, #87, #93
Full Changelog: v1.9.0...v1.9.1
Release 1.9.0: Improved Qiskit Integration
This release brings improved and tighter integration with Qiskit.
First of all, QMAP now natively supports mapping to Qiskit Backend
s (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 Backend
s 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
- Architecture extensions by @IsFairy in #62
- 🔧 Small Infrastructure Update by @burgholzer in #74
- ✨ Native Support for Qiskit Backends by @burgholzer in #75
- ✨ Portable Layout Information by @burgholzer in #76
- 🐛 Fixed a bug in the Qiskit
Layout
import (cda-tum/mqt-core#133) - 🐛 Fixed a bug in the CNOT cancellation optimization pass (cda-tum/mqt-core#134)
- 🐛 Fixed a bug where measurements in the heuristic mapper were not appended correctly (#76)
Full Changelog: v1.8.2...v1.9.0
Release 1.8.2: Additional Architectures
What's Changed
- add rigetti agave and aspen by @lucasberent in #66
Dependency Updates
- Bump extern/qfr from
554a6e4
to23a94fc
by @dependabot in #63 - Bump pypa/cibuildwheel from 2.5.0 to 2.6.0 by @dependabot in #64
- Bump DoozyX/clang-format-lint-action from 0.13 to 0.14 by @dependabot in #67
- Bump extern/qfr from
23a94fc
to0f2d1c2
by @dependabot in #68
New Contributors
- @lucasberent made their first contribution in #66
Full Changelog: v1.8.1...v1.8.2
MaxSAT Evaluation 2022
Additionally, benchmarks submitted to the 2022 MaxSAT Evaluation can be found in the zip
file attached to this release. The WCNF instances were generated using the exact mapper of QMAP using benchmark circuits from MQT Bench.
Release 1.8.1: Bugfix Release
This release fixes some bugs that prevented custom encodings from working properly.
What's Changed
- Encoding fixes by @IsFairy in #59
- Bump extern/qfr from
22528b3
to554a6e4
by @dependabot in #60 - Fix encodings by @burgholzer in #61
Full Changelog: v1.8.0...v1.8.1
Release v1.8.0: Usability Improvements
This release adds many usability improvements to the QMAP tool:
- mapped circuits now properly contain measurements at the end of the circuit
- an option is provided to extract the
WCNF
formulation from Z3 for use in other solvers - a simple post-optimization is introduced that tried to cancel adjacent CNOTs and (parts of) SWAPs
- the search for the minimum number of SWAPs required for a particular permutation is terminated according to the number of allowed SWAPs per layer
- the exact mapper now allows to map to particular subgraphs of larger architectures (given as a set of qubits)
- gate counts of the mapped circuit are now reported slightly differently (SWAPs, etc. are no longer listed extra but appropriately reflected in the CNOT gate count)
- the output in
verbose
mode has been slightly improved for the exact mapper
What's Changed
- ✨ Add measurements to mapped circuit by @burgholzer in #50
- ✨ add option to dump WCNF file from exact mapper by @burgholzer in #51
- Subgraph mapping by @burgholzer in #52
- ⚡ Early termination in permutation search by @burgholzer in #55
- ✨ Pre- and Post-Mapping Optimizations by @burgholzer in #56
- 🚸 Small usability improvements by @burgholzer in #57
- Bump pypa/cibuildwheel from 2.4.0 to 2.5.0 by @dependabot in #54
- Bump extern/qfr from
b8a1148
tob38fe5f
by @dependabot in #53
Full Changelog: v1.7.0...v1.8.0