Mqt.qmap

Latest version: v2.8.0

Safety actively analyzes 682487 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 7 of 7

1.3.2

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

v.1.3.1
Fix an issue with the teleportation.

1.3

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

1.2.1

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.

1.2

This release adds Python bindings to the JKQ QMAP project. Using the tool from Python is now as easy as calling
python
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](https://github.com/Z3Prover/z3) 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
bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(python -c "import z3; print(z3.__path__[0]+'/lib')")

- Download pre-built binaries from https://github.com/Z3Prover/z3/releases and copy the files to the respective system directories
- Build Z3 from source and install it to the system

Page 7 of 7

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.