Skip to content

Releases: cda-tum/mqt-qcec

Version 1.10.1 Release

21 Oct 13:50
fe9d469
Compare
Choose a tag to compare

This release adds a couple of minor new features and fixes. In particular:

  • ✨/🐛 ancillary registers and c3x/c4x gates are now supported in Qiskit QuantumCircuit objects
  • -march=native -mtune=native is actually enabled for source builds via pip
  • ⚡ setup.py now runs on as many threads as available
  • 🚀 added Python 3.10 wheels
  • 📝 updated documentation

Version 1.10.0 Release

31 Aug 11:08
fde8944
Compare
Choose a tag to compare

A lot of (mostly minor) updates have happened since the last QCEC release. This minor release brings QCEC up-to-date. For a detailed list of changes, see (#8).

With this release, we additionally provide Python wheels for Apple Silicon.

Version 1.9.1 Release

31 May 15:07
feea0d8
Compare
Choose a tag to compare

This minor release enables the new sorted buckets feature of the DDPackage submodule which should increase performance across the board.

Version 1.9.0 Release

07 May 11:06
b3fef5c
Compare
Choose a tag to compare

This release adapts the QCEC library to work with the new JKQ DD Package version released recently.
Performance of all decision diagram-based routines is expected to improve (especially those based on simulation).

✨ dynamic DD package size
✨ separate VectorDD and MatrixDD classes
⚡ improved garbage collection
⚡ improved memory allocation
⚡ improved hashing
🔥 removed line
🔥 validInstance removed as such errors are now captured at the QFR level

Version 1.8.1 Release

27 Apr 13:34
481ebd7
Compare
Choose a tag to compare

This release acts as a tag for the last version of the JKQ QCEC repository that uses the old JKQ DD Package.
Future releases will use JKQ DD Package version 2.0 and higher.

Version 1.8.0 Release

10 Mar 16:29
b64d1e4
Compare
Choose a tag to compare

Major refactoring for future developments

  • Python bindings now expose more of the underlying library (Configuration, Results, etc.):
from jkq.qcec import *

config = Configuration()
<...>  # set configuration options
results = verify(circ1, circ2, config)
  • In analogy to the research, the following methods (config.method) can now be configured:
    • reference
    • G_I_Gp (default)
    • simulation
  • The following strategies (config.strategy) are available for the G \rightarrow \mathbb{I} \leftarrow G' method:
    • naive
    • proportional (default)
    • lookahead
    • compilationflow
  • The following types of stimuli (config.stimuli_type) are available for the simulation-based method:
    • classical (default)
    • localquantum
    • globalquantum
  • verify() now returns a Results instance instead of internally storing the result
  • Printing of JSON (results.json()) or CSV information (results.csv()) is laid off to the results object of the equivalence check
  • Runtime information is split into preprocessing and verification time
  • Single-qubit gate fusion and SWAP reconstruction are enabled per default
  • Statistics are included in the results per default

Version 1.7.3 Release

16 Feb 16:37
942b469
Compare
Choose a tag to compare

This minor release fixes a major issue with the deployed Python wheels that could cause (binary) incompatibilities with certain machines.

It also adds many under-the-hood changes/improvements to the underlying CMake project structure:

  • CMake minimum version raised to 3.13
  • C++ standard raised to C++17
  • Submodules are no longer handled in CMake
  • Library installation options have been removed

Version 1.7.2 Release

09 Feb 15:35
8e4ab7e
Compare
Choose a tag to compare

This minor release includes many small under-the-hood improvements from cda-tum/dd_package@14730c6.

Version 1.7.1 Release

25 Jan 15:36
b263d13
Compare
Choose a tag to compare

This small release adds the capability to extract I/O mapping information from Qiskit QuantumCircuit objects.
As a result, the verification of a circuit compiled with IBM Qiskit becomes even easier:

from jkq import qcec
from qiskit import QuantumCircuit, transpile

# create your quantum circuit
qc = <...> 

# append measurements to save output permutation
qc.measure_all() 

# transpile circuit to appropriate backend using some optimization level
qc_trans = transpile(qc, backend=<...>, optimization_level=<0 | 1 | 2 | 3>) 

# verify the compilation result
qcec.verify(qc, qc_trans, method=qcec.Method.compilationflow, statistics=True)

Version 1.7 Release

19 Jan 03:28
ffddbfb
Compare
Choose a tag to compare

This release adds support for directly using Qiskit QuantumCircuit objects (as well as corresponding .pickle files) as input to the verification tool.
Many of Qiskit's operations are natively supported and directly translated to our Quantum Functionality Representation (QFR).
Any non-native operation is decomposed using Qiskit's definition of the operation until only native operations remain.
A release that allows to incorporate compilation information (e.g., logical to physical qubit mapping) is planned for the future.

Due to these changes, the interface of the qcec.verify function has changed: the parameters file1/file2 are now suitably called circ1/circ2.

This release also fixes a small issue where the naive and lookahead method could not be set correctly.