mqt-qcec

MQT QCEC - A tool for Quantum Circuit Equivalence Checking

MIT License

Downloads
17.7K
Stars
86

Bot releases are visible (Hide)

mqt-qcec - Version 1.8.1 Release

Published by burgholzer over 3 years ago

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.

mqt-qcec - Version 1.8.0 Release

Published by burgholzer over 3 years ago

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
mqt-qcec - Version 1.7.3 Release

Published by burgholzer over 3 years ago

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
mqt-qcec - Version 1.7.2 Release

Published by burgholzer over 3 years ago

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

mqt-qcec - Version 1.7.1 Release

Published by burgholzer over 3 years ago

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)
mqt-qcec - Version 1.7 Release

Published by burgholzer almost 4 years ago

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.

mqt-qcec - Version 1.6.2 Release

Published by burgholzer almost 4 years ago

This minor release provides a functioning sdist for Python distribution.

mqt-qcec - Version 1.6.1 Release

Published by burgholzer almost 4 years ago

Minor release

  • Switched CI/CD to Github Actions.
  • Updated submodules
  • Slight modification to Python bindings structure
mqt-qcec - Version 1.6 Release

Published by burgholzer almost 4 years ago

v1.6 introduces random stimuli generation methods for the verification of quantum circuits.
It also adds the option of persisting the state vector used for verification methods based on simulation.

mqt-qcec - Version 1.5 Release

Published by burgholzer about 4 years ago

v1.5 adds JKQ QCEC to PyPI---allowing user to install the tool by calling

pip install jkq.qcec

and use it to verify quantum circuits in Python with

from jkq import qcec
qcec.verify([...])

Additionally, configuration options now also include optimization passes applied before equivalence checking:

  • swapGateFusion: Reconstruct SWAP operations from elementary operations
  • singleQubitGateFusion: Fuse consecutive single qubit gates
  • removeDiagonalGatesBeforeMeasure: Remove diagonal gates before measurements
mqt-qcec - Beta Release for Version 1.5

Published by burgholzer about 4 years ago

v1.5 adds JKQ QCEC to PyPI---allowing user to install the tool by calling

pip install jkq.qcec

and use it to verify quantum circuits in Python with

from jkq import qcec
qcec.verify([...])

This beta release tests the CI/CD functionality for automatically building and deploying to PyPI.