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.3.1.tar.gz (67.1 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.3.1-py3-none-win_amd64.whl (819.4 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-2.3.1-py3-none-manylinux_2_39_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu-2.3.1-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.3.1.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-2.3.1.tar.gz
  • Upload date:
  • Size: 67.1 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.3.1.tar.gz
Algorithm Hash digest
SHA256 aaffa5d2d820c55e48c8b2c5a899a0046605edcc3d6a7723b2295124b6b3099f
MD5 08562cccc7392da482f9d7b8bdffd533
BLAKE2b-256 18fab9de41fc2d9280c90d2afe3dae89f3919d58dc2a8732709fc43efedd2bd2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-2.3.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 819.4 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.3.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 5634bdcc1b59820d13e9d88d864eed8405623c52399d58989e75cbdcc32627b0
MD5 06ad1128cd1e5ceebb2f0b9fce544d94
BLAKE2b-256 220256aa473793dc2d1f827b48e76b7852d42044e575aca1ca6f11518eb3311b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.3.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 3becc7b824897aeaa159ae31bfc2d8bf5c90268ef74ef7f8f616a201f209e744
MD5 e2c86ed99e81f401eed1bfd34819b80c
BLAKE2b-256 5c8c1afaefa2d91373643fe46b132cbe1b644e824fd495fbba0d155369054d3c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.3.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 2c2932ef333ef4eb398a6ad28d44cb6bb324a609c5a6d0a8f22a39b898e84f17
MD5 1110aa510181fc1a0687f0722e73ea47
BLAKE2b-256 95cf46c4283a56f95198081a383d510b49d39db46b8ca4f964fc9e6fad785624

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.3.1-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 b6f30846a1712d8ff83e82ac8addd733a2976d60d69251ee625c65466a248b28
MD5 96692c4422290e56dcc876ca0f648408
BLAKE2b-256 180c10542c74c3b65e34dfc392791c4e0dd7f9bfe1d4975d5219c831ef3c814b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.3.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 78de3092b53aa9e7b634812633124336da7d71e8bf8327c95bfacbd297fdf7f4
MD5 da22cd6cce61c9950b864216ec4b429d
BLAKE2b-256 78bcfa2494a292879ba70b6ecb53f6f9d5a58958b17cd5d1222bbc9b64e9ae9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.3.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4c1e177668fdc78140e994b8071a67012821a5785c2cae154949952f14a799d2
MD5 fbee25f865ef6a9d51aabed308cc2578
BLAKE2b-256 14984114037b153d9cb73a8bf9c27bf5176f8f640a6526e5a748812138144f32

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