Skip to main content

pyqrack - Pure Python vm6502q/qrack Wrapper

Project description

pyqrack

Downloads Downloads Downloads

Pure Python bindings for the pure C++11 Qrack quantum computer simulator library

(PyQrack is just pure Qrack.)

This is the purely CPU-based variant of PyQrack (with module name pyqrack-cpu). This alternate build of PyQrack is provided so that systems that won't use OpenCL or CUDA anyway (such as because they lack any GPUs or other accelerators like the Intel HD) do not need to install the OpenCL library in order to use PyQrack. In this form, both the PyQrack module and the underlying C++ Qrack library are entirely external dependency-free.

If you're looking for Mac ARM support, use the package pyqrack, not pyqrack-cpu. Mac officially "deprecated" OpenCL years ago. Hence, accelerator support is not included in ARM-based Mac wheels, and OpenCL installation is not required on these systems, but, if you have a CUDA accelerator on ARM-based Mac, you could try the package pyqrack-cuda instead.

Performance can benefit greatly from following the Qrack repository "Quick Start" and "Power user considerations."

Import and instantiate QrackSimulator instances. This simulator can perform arbitrary single qubit and controlled-single-qubit gates, as well as other specific gates like SWAP.

Any 2x2 bit operator matrix is represented by a list of 4 complex floating point numbers, in row-major order.

Single and array "b" parameters represent Pauli operator bases. They are specified according to the enumeration of the Pauli class.

MC[x] and MAC[x] methods are controlled single bit gates, with as many control qubits as you specify via Python list c argument. MCX is multiply-controlled Pauli X, and MACX is "anti-"controlled Pauli X, i.e. "anti-control" activates the gate if all control bits are specifically off, as opposed to on.

To load the required unitaryfund/qrack libraries from a different location, set the PYQRACK_SHARED_LIB_PATH environment variable.

PyQrack has experimental support for PyZX Circuit definitions as an intermediate representation for QrackSimulator. To try this, load a Circuit in PyZX, (use that module to optimize your circuit, as you like,) and create a QrackSimulator() instance using the pyzxCircuit named argument of the constructor, like so:

sim = QrackSimulator(pyzxCircuit=c)

where c is a PyZX circuit object. The circuit will automatically be simulated in the constructed QrackSimulator instance. This also allows loading from QASM and other intermediate representations supported by PyZX.

See https://pyqrack.readthedocs.io/en/latest/ for an API reference.

For custom Qrack build floating-point precision, where options are half, float, double, and quad, set an environment variable via export QRACK_FPPOW=[n] (or as appropriate to your shell) where [n] is the logarithm base 2 of the number of bits in the systemic floating point type (4, 5, 6, or 7, with 5 or float as default, i.e. 2**5=32 for 32-bit float). Your Qrack installation floating-point build option must match this specific value, which might require a custom Qrack build.

Please feel welcome to open an issue, if you'd like help. 😃

Special thanks go to Zeeshan Ahmed, for bug fixes and design suggestions, Ashish Panigrahi, for documentation and design suggestions, WingCode, for documentation, Or Golan, for CI build pipeline tooling, and to the broader community of Qrack contributors, for years of happy Qracking! You rock!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyqrack_cpu-2.5.0.tar.gz (60.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyqrack_cpu-2.5.0-py3-none-win_amd64.whl (812.5 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-2.5.0-py3-none-manylinux_2_39_x86_64.whl (3.0 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-2.5.0-py3-none-manylinux_2_35_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu-2.5.0-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

pyqrack_cpu-2.5.0-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu-2.5.0-py3-none-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

Details for the file pyqrack_cpu-2.5.0.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-2.5.0.tar.gz
  • Upload date:
  • Size: 60.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pyqrack_cpu-2.5.0.tar.gz
Algorithm Hash digest
SHA256 1322172b1b5b67e9dfc57c0032c67e3851d5ccda8ea615573dc9a28fd2bd4c02
MD5 42646c7edb24d8ab0a617556ef5b63a0
BLAKE2b-256 a06089b45920b7998c47fd7aae90b419a3c47dcb123d704833b09bdc5265d086

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.5.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: pyqrack_cpu-2.5.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 812.5 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pyqrack_cpu-2.5.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 322b1e40c66d4578eceabb8799bcad5363c0c15c29744be53b3a7ba01fece4b0
MD5 170eea1225bdf1b90ffb3d3955667a9c
BLAKE2b-256 8138504f4a6c9a526c510d58b34d7448ffdb6c33c3faa6298419a00b00ae03b8

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.5.0-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-2.5.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 662be835eaf74dbf5e9337a3b5120c25245ed218ab4de9a186555e8193428481
MD5 fb38cbff8d311f732af84f23da6ae900
BLAKE2b-256 e75309d0193fa0deca64bce94debf60ccb0157a930e85e0dba3798ee421f88e7

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.5.0-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-2.5.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 da2b742b255077892c59266e9d7494b0cd1bdb87fe289e2e5ac6e2bc603530f7
MD5 f7f473a320149c4821c81874c6a09943
BLAKE2b-256 d828c801b6c52a7c073c1ad3b424161c563fcc28f0f2ce43887fba42aa347238

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.5.0-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-2.5.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 0f23b57d36aa2287d513bf255c51bcfc714f3ecb99e8cdf77a868e8cee0e9c29
MD5 6c8d0460b9a840a90997c4d6036b95e2
BLAKE2b-256 882b921c215e6c7bd859efa48e9bbbad5acae371b1a6510f4dd3e032bf225996

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.5.0-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-2.5.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3d915efbc24a17178b394835cbe10261426f8aa0670632cf79f2390b80c3d244
MD5 818600734696bc0340f03ac8479ecff8
BLAKE2b-256 c9d5519da5433ce200dc434e4c6809d75f74a282c4f300d09823e33b189a79b6

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.5.0-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-2.5.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a786d332086538dc5630e9b3c407347f2d91aa9400a6f59a3aac5c2af8a53424
MD5 571ab9ca9a49aa87491e6f7339b1e994
BLAKE2b-256 b2b8f9f129f6f97674b316e40f183baaa059a75fd16a859507e988f0cefeed41

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page