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 - QCEC 2.1.0 Release Candidate 2

Published by burgholzer almost 2 years ago

As expected, this might take a few tries.

mqt-qcec - QCEC 2.1.0 Release Candidate 1

Published by burgholzer almost 2 years ago

This is a pre-release to test the new Cirrus CI infrastructure for publishing Apple Silicon and Linux ARM wheels.

What's Changed

Full Changelog: https://github.com/cda-tum/qcec/compare/v2.0.0...v2.1.0-rc1

mqt-qcec - QCEC 2.0.0

Published by burgholzer almost 2 years ago

Long time in the making, but now it's finally here: QCEC 2.0.0 πŸ₯³

What's Changed

This major release refactors and improves many aspects of QCEC in order to make it more scalable, efficient, and extendable.
At the same time, lots of effort has gone into ensuring proper code quality and providing informative documentation.

✨ New Features

  • Automated Equivalence Checking Flow (including parallelization 🧡) envisioned in

    Lukas Burgholzer and Robert Wille. Advanced equivalence checking for quantum circuits. IEEE Transactions on CAD of Integrated Circuits and Systems, 2021. (arXiv:2004.08420)

  • Automated generation of compilation flow profiles as good oracles for equivalence checking based on

    Lukas Burgholzer, Rudy Raymond, and Robert Wille. Verifying results of the IBM Qiskit quantum circuit compilation flow. In International Conference on Quantum Computing and Engineering. 2020. (arXiv:2009.02376)

  • ZX-Calculus Equivalence Checker based on

    Tom Peham, Lukas Burgholzer, and Robert Wille. Equivalence checking of quantum circuits with the ZX-calculus. Journal of Emerging and Selected Topics in Circuits and Systems, 2022. (arXiv:2208.12820)

  • Equivalence Checking of Parameterized Quantum Circuits based on

    Tom Peham, Lukas Burgholzer, and Robert Wille. Equivalence checking of parameterized quantum circuits: Verifying the compilation of variational quantum algorithms. In Asia and South Pacific Design Automation Conference. 2023. (arXiv:2210.12166)

β™Ώ Accessibility

  • βš™οΈ Push-button solution for equivalence checking of quantum circuits
  • 🐧/🍎/🏁 pre-built Python wheels for Linux, macOS (incl. Apple Silicon), and Windows
  • 🐍 Python 3.7 to 3.11 support
  • βš›οΈ Seamless integration with Qiskit

🎨 Code Quality

  • πŸ—ƒοΈ follow the LLVM coding standards for C++
  • 🐍 follows best practices for developing Python projects and packages from the popular Scikit-HEP project
  • πŸ§ͺ extensive unit tests for C++ and Python
  • πŸͺ pre-commit checks

πŸ“ Project documentation hosted at ReadTheDocs.

  • πŸš€ Quickstart and User Guide
  • πŸ§‘β€πŸ’» Development Guide
  • πŸ‘₯ Contributing Guide
  • πŸ“„ API documentation

New Contributors

Full Changelog: https://github.com/cda-tum/qcec/compare/v1.10.5...v2.0.0

mqt-qcec - QCEC 2.0: Release Candidate 9

Published by burgholzer about 2 years ago

What's Changed

Full Changelog: https://github.com/cda-tum/qcec/compare/v2.0.0-rc8...V2.0.0-rc9

mqt-qcec - QCEC 2.0: Release Candidate 8

Published by burgholzer about 2 years ago

What's Changed

Full Changelog: https://github.com/cda-tum/qcec/compare/v2.0.0-rc7...v2.0.0-rc8

mqt-qcec - QCEC 2.0 Release Candidate 7

Published by burgholzer about 2 years ago

What's Changed

Full Changelog: https://github.com/cda-tum/qcec/compare/v2.0.0-rc6...v2.0.0-rc7

mqt-qcec - QCEC 2.0 Release Candidate 6

Published by burgholzer about 2 years ago

This release mostly concerns the internal library and contains almost no user facing changes (besides some bugfixes πŸ›).

It significantly improves the code quality and its assurance. To this end,

  • the project now follows and enforces (most of) LLVM's code format style and coding guidelines for the C++ part, including consistent naming schemes and source code width limits
  • several improvements reported by the SonarLint tool and various clang-tidy checks have been incorporated
  • similar to the C++ workflow which has been quite well monitored, the Python side of the project now adopts the best practices from https://scikit-hep.org/developer in order to maintain a consistent and high quality

All these changes ensure that future contributions to QCEC can follow predefined guidelines and rules, whether it's for developing the core C++ library or the Python package.

What's Changed

Full Changelog: https://github.com/cda-tum/qcec/compare/v2.0.0-rc5...v2.0.0-rc6

mqt-qcec - QCEC 2.0 Release Candidate 5

Published by burgholzer over 2 years ago

This release marks the addition of the first equivalence checker not based on decision diagrams to QCEC: the ZX checker.
It tries to use the rules of the ZX-Calculus to reduce the ZX-Diagram corresponding to the circuit $G^{\prime -1}\cdot G$ to the identity diagram.
Performance-wise, it represent a complementary alternative to all existing checkers and is employed per default when invoking QCEC.

Furthermore, this release makes qiskit-terra a project dependency (in order to ease integration) and provides easy configuration files for CLion users.

What's Changed

New Contributors

Full Changelog: https://github.com/cda-tum/qcec/compare/v2.0.0-rc4...v2.0.0-rc5

mqt-qcec - QCEC 2.0 Release Candidate 4

Published by burgholzer over 2 years ago

This is a quick release to incorporate a fix from the QFR library (cda-tum/qfr#133).
Furthermore it brings some documentation updates for developers.

What's Changed

Full Changelog: https://github.com/cda-tum/qcec/compare/v2.0.0-rc3...v2.0.0-rc4

mqt-qcec - QCEC 2.0 Release Candidate 3

Published by burgholzer over 2 years ago

What's Changed

Full Changelog: https://github.com/cda-tum/qcec/compare/v2.0.0-rc2...v2.0.0-rc3

mqt-qcec - QCEC 2.0 Release Candidate 2

Published by burgholzer over 2 years ago

What's Changed

Full Changelog: https://github.com/cda-tum/qcec/compare/v2.0.0-rc1...v2.0.0-rc2

mqt-qcec - QCEC 2.0 Release Candidate

Published by burgholzer over 2 years ago

This release refactors many aspects of QCEC in order to make it more scaleable, efficient, and extendable.
The resulting equivalence checking flow now more closely resembles a parallel version of the flow proposed in the "Advanced Equivalence Checking for Quantum Circuits" paper.
Furthermore, this release adds project documentation to the QCEC project which is hosted at ReadTheDocs.

With this release, the rewrite is 99% complete and quite well documented as well as tested. It will undergo some more testing until the final v2.0 will be released.

mqt-qcec - v1.10.5 Release: MQT QCEC

Published by burgholzer over 2 years ago

This release marks the transition from the JKQ framework to the Munich Quantum Toolkit (MQT).

What's Changed

Full Changelog: https://github.com/cda-tum/qcec/compare/v1.10.4...v1.10.5

mqt-qcec - Version 1.10.4: Bugfix Release

Published by burgholzer almost 3 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/iic-jku/qcec/compare/v1.10.3...v1.10.4

mqt-qcec - Version 1.10.3 Release

Published by burgholzer almost 3 years ago

This release adds the improvements from #12, #13, and #14:

  • ✨ adds the opt-in functionality for verifying dynamic circuits via translating such circuits to static ones.
  • ✨ add reorder operations pass to pre-processing
  • ✨ add functionality to compare the resulting DD to the identity with a given threshold
  • ✨ introduce new optimization that tries to cancel identical operations in the alternating strategy whenever possible
  • πŸ—οΈ switch to PEP 517 pyproject.toml
  • πŸ› 🍎: deploying under macOS now produces fat binaries (i.e., for x86_64 and arm64 architectures). This allows to effectively build universal2 wheels for Python 3.8 onwards and eventually makes the wheels work on M1-based Macs
mqt-qcec - Version 1.10.2 Bugfix Release

Published by burgholzer almost 3 years ago

This small bugfix release adds:

  • πŸ› a fix for a bug regarding RZ gates (see iic-jku/dd_package#25)
  • 🐧 musllinux wheels
mqt-qcec - Version 1.10.1 Release

Published by burgholzer almost 3 years ago

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

Published by burgholzer about 3 years ago

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.

mqt-qcec - Version 1.9.1 Release

Published by burgholzer over 3 years ago

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

mqt-qcec - Version 1.9.0 Release

Published by burgholzer over 3 years ago

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