Skip to content

Releases: munich-quantum-toolkit/qmap

Release 1.5.0: Limiting the Search Space

28 Nov 13:08
99c9476
Compare
Choose a tag to compare

This release adds the functionality to limit the search space during optimal circuit mapping introduced in:

L. Burgholzer, S. Schneider, and R. Wille. Limiting the Search Space in Optimal Quantum Circuit Mapping. In Asia and South Pacific Design Automation Conference (ASP-DAC), 2022.

Furthermore, it brings the following additions and changes:

  • ♻️ refactored Python bindings that are now easier to use
  • ⚡ actually enables -march=native -mtune=native for source builds via pip
  • ⚡ setup.py now runs on as many threads as available
  • 🏗️ switch to PEP 517 pyproject.toml
  • 💚 switch cibuildwheel configuration to pyproject.toml
  • 🚀 Python 3.10 wheels
  • ⬆️ updates for all external submodules
  • 📝 updated documentation

Release v1.4.0: Internal Representation Update

01 Sep 16:14
d8f4f5c
Compare
Choose a tag to compare

This release updates QMAP to use the latest version of the QFR library. Notable changes:

Release v1.3.2: Bindings Bugfix

21 Jun 14:03
6db4606
Compare
Choose a tag to compare

Fixes some issues and bugs in the bindings code and updates CI Pipeline to always test bindings.

Version 1.3.1 Release

06 Apr 19:37
Compare
Choose a tag to compare

Fix an issue with the teleportation.

Version 1.3 Release

01 Mar 14:04
7e60c55
Compare
Choose a tag to compare

This release adds the option to use quantum teleportation to complement swaps in the mapping process.

Version 1.2.1 Release

16 Feb 02:37
e3b56cc
Compare
Choose a tag to compare

This minor release mainly fixes three issues

  • The initial layout and output permutation were not tracked correctly in the heuristic mapper
  • The initial_layout and layering settings of the compile function where not passed correctly to the underlying Python bindings
  • Wheels were built with -march=native -mtune=native. This caused incompatibilities/invalid instructions whenever used under a different architecture. These settings are now only used when building on the host system.

It also includes major under-the-hood changes to the CMake structure of the project.

Version 1.2 Release

21 Jan 08:52
7bf23f1
Compare
Choose a tag to compare

This release adds Python bindings to the JKQ QMAP project. Using the tool from Python is now as easy as calling

from jkq import qmap

qmap.compile(circ, arch, ...)

where circ is either a Qiskit QuantumCircuit object or the path to an input file (supporting various formats, such as .qasm, .real,...)
and arch is either one of the pre-defined architectures (see below) or the path to a file containing the number of qubits and a line-by-line enumeration of the qubit connections. (Note that circuits are still assumed to be already decomposed into 1- and 2-qubit gates.)

Architectures that are available per default (under qmap.Arch.<...>) include:

  • IBM_QX4 (5 qubit, directed bow tie layout)
  • IBM_QX5 (16 qubit, directed ladder layout)
  • IBMQ_Yorktown (5 qubit, undirected bow tie layout)
  • IBMQ_London (5 qubit, undirected T-shape layout)
  • IBMQ_Bogota (5 qubit, undirected linear chain layout)

Whether the heuristic (default) or the exact mapper is used can be controlled by passing method=qmap.Method.heuristic or method=qmap.Method.exact to the compile function.

All available parameters are shown in the README.md.

Note that in order for the bindings to work the SMT Solver Z3 >= 4.8.3 has to be installed on the system and the dynamic linker has to be able to find the library.

  • Under Ubuntu 20.04 and newer: sudo apt-get install z3
  • Under macOS: brew install z3
  • Alternatively: pip install z3-solver and then append the corresponding path to the library path (LD_LIBRARY_PATH under Linux, DYLD_LIBRARY_PATH under macOS), e.g. via
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(python -c "import z3; print(z3.__path__[0]+'/lib')")