Releases: munich-quantum-toolkit/qmap
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 (munich-quantum-toolkit/core#133) - 🐛 Fixed a bug in the CNOT cancellation optimization pass (munich-quantum-toolkit/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
Release v1.7.0: Bugfixes and Modernization
This release fixes several bugs:
- Circuits containing measurements and barriers could not be mapped due to the non-unitary nature of these gates
- A bug in the heuristic mapper prevented it from correctly tracking the number of additional gates
- Circuits containing only single-qubit gates could not be mapped by the exact mapper
- Execution was not properly halted whenever the exact mapper did not return a valid result (timeout or unsat)
- The search space limitation feature had a serious bug that prevented it from creating proper SAT instances in some cases
- If the exact mapper found a solution that requires no overhead, it still tried out every possible combination of possible subsets.
sx
andsxdg
gates in.qasm
files were not natively supported
In addition, this release modernizes the build and deployment configurations to be up-to-date with our other projects:
- the README is updated with the new TUM information
- the license is updated
- z3 has been updated to version 3.8.16
- versioning is now handled with
setuptools-scm
- ninja is now used per default for building the python package
What Else Has Changed
- Bump actions/checkout from 2 to 3 by @dependabot in #33
- Bump actions/cache from 2 to 3 by @dependabot in #36
- Bump codecov/codecov-action from 2.1.0 to 3.0.0 by @dependabot in #42
- Bump actions/upload-artifact from 2 to 3 by @dependabot in #44
- Bump actions/download-artifact from 2 to 3 by @dependabot in #43
- Bump codecov/codecov-action from 3.0.0 to 3.1.0 by @dependabot in #47
- Bump github/codeql-action from 1 to 2 by @dependabot in #49
Full Changelog: v1.6.0...v1.7.0
Release v1.6.0: MQT QMAP
This release marks the transition from the JKQ
framework to the Munich Quantum Toolkit (MQT).
What's Changed
- Bump extern/qfr from
49f5923
to2ab280b
by @dependabot in #22 - Bump extern/qfr from
2ab280b
to34b5811
by @dependabot in #24 - Bump extern/qfr from
34b5811
todca7f1f
by @dependabot in #25 - Bump extern/qfr from
dca7f1f
to250e721
by @dependabot in #28 - Bump extern/qfr from
250e721
to6bb07d6
by @dependabot in #29 - Bump actions/setup-python from 2 to 3 by @dependabot in #31
- Rebranding to MQT by @burgholzer in #30
Full Changelog: v1.5.1...v1.6.0
Release 1.5.1: Bugfixes and Apple Silicon Support
What's Changed
- Portable wheels for Apple Silicon by @burgholzer in #14
- Bump DoozyX/clang-format-lint-action from 0.12 to 0.13 by @dependabot in #19
- Bump codecov/codecov-action from 1 to 2.1.0 by @dependabot in #18
- Bump extern/qfr from
e7fcb02
to49f5923
by @dependabot in #20 - Compile flag and z3 dependency fixes by @katringoogoo in #21
New Contributors
- @dependabot made their first contribution in #19
- @katringoogoo made their first contribution in #21
Full Changelog: v1.5.0...v1.5.1