Releases: munich-quantum-toolkit/core
Version 1.7.1 Release
This release adds minor improvements from #16, #18, and #20:
- ✨ added the possibility to dump a tensor network representation of a given
QuantumComputation
- ✨ the Qiskit QuantumCircuit import now natively supports ancillary registers and c3x/c4x gates.
- ⚡ actually enables -march=native -mtune=native for source builds via pip
- 🚨 fixed some compiler warnings in the bindings code
- ⬆️ updated all external submodules to their most recent version
- ⚡ setup.py now runs on as many threads as available
- 🍎 added pre-built wheels for Apple silicon
- 🚀 added Python 3.10 wheels
- 💚 cleaned up the CI script
- 📝 updated documentation
Version 1.7.0 Release
This release adds the improvements from #14 and #15
- ✨ improved QASM parser to handle
mcphase
gates and to ignore definitions of gates that are inherently known to the parser - 🐛 addresses a compilation error when changing the dd::Qubit type (munich-quantum-toolkit/qcec#7)
- 📹 updates the visualization to (optionally) use polar coordinates
- ⚡ incorporates lots of minor performance and stability improvements from the DD package repository
Version 1.6.0 Release
- QuantumComputations can be cloned now
- Shortcuts to most operations for easier usage
Version 1.5.0 Release
The JKQ QFR Python bindings unnecessarily used JSON as an intermediate layer between C++ and Python.
This Release refactors the bindings to directly use Python objects for that purpose.
Overall, this should result in a marginal performance increase.
Furthermore, the underlying CI pipeline is modified to test the codebase more rigorously.
Version 1.4.2 Release
This minor release enables the new sorted buckets feature of the DDPackage submodule which should increase performance across the board.
Version 1.4.1 Release
This release adds the essential functionality to the JKQ QFR library to support hybrid Schrödinger-Feynman simulation.
The main change is that operations now support a start qubit for generating DDs not starting from 0, which is needed for splitting the circuit horizontally.
For details on the exact changes, see the corresponding pull request (#6).
Version 1.4.0 Release
This release marks the update to the new JKQ DD Package version released recently, which increases the performance of practically all decision diagram-related routines. For example, using the JKQ QFR Python library to construct a functional representation of
- the Quantum Fourier Transform is now ~20% faster when using the sequential strategy, and ~30% faster when using the recursive strategy
- Grover's algorithm is now ~40% faster on average (up to 80% or more for larger instances) when using the sequential strategy, and ~25% faster when using the recursive strategy
✨ separation of matrix and vector DDs
✨ dynamic qubit numbers for DD package
✨ introduce Definitions.hpp
containing the most used definitions/constants
⚡ improved garbage collection
⚡ improved hashing
⚡ improved memory allocation
🔥 removed line parameter
🎨 unsigned short
to dd::Qubit
for qubits, unsigned short
to dd::QubitCount
for numbers of qubits, std::size_t
mostly everywhere else for consistency
♻️ controls are no longer a vector but a set
♻️ Measurement operations now hold separate vectors for qubits and classical registers
♻️ moved DD generation routines (e.g. for SWAP) to DD Package
🐛 fix bug where permutation was not correctly accounted for in recursive functionality construction
🐛 fix bug where reference counting was not done correctly when recursively building the functionality of Grover's algorithm
🐛 fix reference counting bug in reduceAncillary and reduceGarbage methods
Version 1.3.1 Release
This release acts as a tag for the last version of the JKQ QFR repository that uses the old JKQ DD Package.
Future releases will use JKQ DD Package version 2.0 and higher.
Version 1.3.0 Release
This release introduces the JKQ QFR Python package jkq.qfr
for efficiently constructing functional representations of quantum circuits based on methods proposed in [1].
[1] L. Burgholzer, R. Raymond, I. Sengupta, and R. Wille. "Efficient Construction of Functional Representations for Quantum Algorithms". arXiv:2103.08281, 2021
In order to start using it, install the package using
pip install jkq.qfr
Then, in Python, the functionality of a given circuit (provided, e.g., as Qiskit QuantumCircuit) can be constructed with:
from jkq import qfr
from qiskit import QuantumCircuit
# create your quantum circuit
qc = <...>
# construct the functionality of the circuit
results = qfr.construct(qc)
# print the results
print(results)
See the README for more details.